OpenAI Gym:如何从自定义 OPenvironment 中访问环境注册数据(例如 max_episode_steps)?
OpenAI Gym: How do I access environment registration data (for e.g. max_episode_steps) from within a custom OPenvironment?
我使用 OpenAI Gym 创建了一个自定义环境。我想访问 init.py 中指定的 max_episode_steps 和 reward_threshold
例如:
from gym.envs.registration import registry, register, make, spec
register(
id='myenv-v0',
entry_point='gym.envs.algorithmic:myenv',
tags={'wrapper_config.TimeLimit.max_episode_steps': 200},
reward_threshold=25.0,
)
但是如何从 gym_myenv.py 访问它?
如果我先创建环境并使用 env._max_episode_steps,我就可以访问。但是,我无法从 [=33 中访问 _max_episode_steps =].
目前看来唯一的方法是在 init 方法之外访问它们,即在创建 gym 环境对象之后,即在任何其他方法中,如 reset( ) 或 render() 或其他。
可以使用 self.spec.max_episode_steps
或 self._max_episode_steps
访问
我不确定它是故意这样还是可能是一个错误。
如果您在此处看到 make()
的代码:
Environment
在 spec
成为其 属性 之前实例化。我认为 max_timesteps
不是环境的固有 属性,目的是让环境具有任意数量的可能 max_timesteps
,用于您可以为同一基础环境注册的各种环境 ID。
顺便说一句,如果您在该文件中看到第 51 行,则您在上面提供的标签将不起作用,因为该值已被您为 max_episode_steps
传递给 register()
的值覆盖。我刚刚测试了它。
这是您通过名称访问给定环境的 EnvSpec
的方式:
>>> spec = gym.envs.registration.spec('CartPole-v0')
>>> spec
EnvSpec(CartPole-v0)
根据the source。传递给 env 构造函数的 kwargs
应该存储在 spec._kwargs
.
中
我只是想知道如何获得 reward_threshold
,这是您可以从规范中获得的另一个例子:
>>> spec.reward_threshold
195.0
您还可以通过 env.spec
.
访问环境规范
我使用 OpenAI Gym 创建了一个自定义环境。我想访问 init.py 中指定的 max_episode_steps 和 reward_threshold 例如:
from gym.envs.registration import registry, register, make, spec
register(
id='myenv-v0',
entry_point='gym.envs.algorithmic:myenv',
tags={'wrapper_config.TimeLimit.max_episode_steps': 200},
reward_threshold=25.0,
)
但是如何从 gym_myenv.py 访问它? 如果我先创建环境并使用 env._max_episode_steps,我就可以访问。但是,我无法从 [=33 中访问 _max_episode_steps =].
目前看来唯一的方法是在 init 方法之外访问它们,即在创建 gym 环境对象之后,即在任何其他方法中,如 reset( ) 或 render() 或其他。
可以使用 self.spec.max_episode_steps
或 self._max_episode_steps
我不确定它是故意这样还是可能是一个错误。
如果您在此处看到 make()
的代码:
Environment
在 spec
成为其 属性 之前实例化。我认为 max_timesteps
不是环境的固有 属性,目的是让环境具有任意数量的可能 max_timesteps
,用于您可以为同一基础环境注册的各种环境 ID。
顺便说一句,如果您在该文件中看到第 51 行,则您在上面提供的标签将不起作用,因为该值已被您为 max_episode_steps
传递给 register()
的值覆盖。我刚刚测试了它。
这是您通过名称访问给定环境的 EnvSpec
的方式:
>>> spec = gym.envs.registration.spec('CartPole-v0')
>>> spec
EnvSpec(CartPole-v0)
根据the source。传递给 env 构造函数的 kwargs
应该存储在 spec._kwargs
.
我只是想知道如何获得 reward_threshold
,这是您可以从规范中获得的另一个例子:
>>> spec.reward_threshold
195.0
您还可以通过 env.spec
.