如何查看 OpenAI 健身房环境中可用的动作?
How to check the actions available in OpenAI gym environment?
使用 OpenAI gym 时,使用 import gym
导入库后,可以使用 env.action_space
检查动作 space。但这只给出了动作的大小space。我想知道 action space 的每个元素对应什么样的动作。有简单的方法吗?
如果你的动作 space 是离散的和一维的,env.action_space
会给你一个 Discrete
对象。您可以像这样访问可用操作的数量(它只是一个整数):
env = gym.make("Acrobot-v1")
a = env.action_space
print(a) #prints Discrete(3)
print(a.n) #prints 3
如果您的操作 space 是离散的和多维的,您将得到一个 MultiDiscrete
(而不是 Discrete
)对象,您可以在其上调用 nvec
(而不是 n
)来获取描述每个维度的可用操作数的数组。但请注意,这不是很常见的情况。
如果你有一个连续的动作space,env.action_space
会给你一个Box
对象。以下是访问其属性的方法:
env = gym.make("MountainCarContinuous-v0")
a = env.action_space
print(a) #prints Box(1,)
print(a.shape) #prints (1,), note that you can do a.shape[0] which is 1 here
print(a.is_bounded()) #prints True if your action space is bounded
print(a.high) #prints [1.] an array with the maximum value for each dim
print(a.low) #prints [-1.] same for minimum value
使用 OpenAI gym 时,使用 import gym
导入库后,可以使用 env.action_space
检查动作 space。但这只给出了动作的大小space。我想知道 action space 的每个元素对应什么样的动作。有简单的方法吗?
如果你的动作 space 是离散的和一维的,env.action_space
会给你一个 Discrete
对象。您可以像这样访问可用操作的数量(它只是一个整数):
env = gym.make("Acrobot-v1")
a = env.action_space
print(a) #prints Discrete(3)
print(a.n) #prints 3
如果您的操作 space 是离散的和多维的,您将得到一个 MultiDiscrete
(而不是 Discrete
)对象,您可以在其上调用 nvec
(而不是 n
)来获取描述每个维度的可用操作数的数组。但请注意,这不是很常见的情况。
如果你有一个连续的动作space,env.action_space
会给你一个Box
对象。以下是访问其属性的方法:
env = gym.make("MountainCarContinuous-v0")
a = env.action_space
print(a) #prints Box(1,)
print(a.shape) #prints (1,), note that you can do a.shape[0] which is 1 here
print(a.is_bounded()) #prints True if your action space is bounded
print(a.high) #prints [1.] an array with the maximum value for each dim
print(a.low) #prints [-1.] same for minimum value