【问题标题】:Resize a state of a gym environment composed by 4 frames (atari environment)调整由 4 帧组成的健身房环境的状态(atari 环境)
【发布时间】:2021-05-24 14:58:50
【问题描述】:

我正在开发基于 DQN 的自治代理。我正在使用健身房库来制作我想要测试的环境,但我一直在处理状态帧。使用 FrameStack 包装器,gym 环境返回的状态具有以下观察空间:

env = gym.make('Bowling-v0')
env = gym.wrappers.FrameStack(env, 4)
print(env.observation_space)

Box(0, 255, (4, 210, 160, 3), uint8)

我希望观察空间是Box(0, 255, (4, 88, 80, 1), uint8)。我能怎么做?我尝试过像这样使用另一个包装器:

env = gym.wrappers.ResizeObservation(env, (4, 88, 80, 1))
print(env.observation_space)

但是得到的观察空间是Box(0, 255, (4, 88, 80, 1, 160, 3), uint8)。我做错了什么?

【问题讨论】:

  • 观察空间的形状反映了您从环境中返回的图像。如果要调整它的大小,则需要在目标维度中具有相同大小的输入。换句话说,210*160*3 != 88*80*1。您要问的是将 210x160x3 图像转换为 88x80x1 图像。您需要一些自定义转换功能来做到这一点。或者尝试将 DQN 的输入层更改为 210x160x3。

标签: python wrapper environment openai-gym atari-2600


【解决方案1】:

已修复!我只是用了错误的方式。

env = gym.make('Bowling-v0')
print(env.observation_space)

Box(0, 255, (210, 160, 3), uint8)

必须首先应用调整大小,然后只有在调整大小后才应用堆叠!

env = gym.wrappers.ResizeObservation(env, (88, 80))
print(env.observation_space)

Box(0, 255, (88, 80, 3), uint8)

所以现在我们可以继续使用 FrameStack 包装器进行堆叠

env = gym.wrappers.FrameStack(env, 4)
print(env.observation_space)

Box(0, 255, (4, 88, 80, 3), uint8)

【讨论】:

    猜你喜欢
    • 2017-11-07
    • 2020-10-01
    • 1970-01-01
    • 2017-12-17
    • 2020-04-28
    • 2017-11-06
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    相关资源
    最近更新 更多