reinforcement-learning - DQN:在将观察空间转换为 Box 环境后访问原始观察结果?

标签 reinforcement-learning openai-gym dqn openai-api

我正在改编 Tabor 的 DQN 类(class) (https://github.com/philtabor/Deep-Q-Learning-Paper-To-Code) 中的 Pytorch 代码,以与 vizdoomgym 库一起使用,之前已经成功地在 TF 中制作了一个版本。

训练我的代理后,我会将其性能可视化为 .mp4 视频。以前,我使用 SK-video 库来记录播放中的代理,因为内部 Monitor 类不能与 VZDgym 库一起使用。这是通过简单地将每个观察结果保存到图像数组中来实现的。

我遇到了一个问题,因为我下面的代码调用了包装器以便将观察空间转换为 Box 环境,结果图像实际上被扭曲了。这些包装器可以在 utils.py 文件中找到,主要方法如下所示:

def make_env(env_name, shape=(84,84,1), repeat=4, clip_rewards=False,
             no_ops=0, fire_first=False):
    env = gym.make(env_name)
    env = RepeatActionAndMaxFrame(env, repeat, clip_rewards, no_ops, fire_first)
    env = PreprocessFrame(shape, env)
    env = StackFrames(env, repeat)

    return env

我注意到预处理包装器继承了observation 方法,这意味着我应该能够访问观察结果并在预处理之前存储它们。但是,我不熟悉这种解决方案的内存管理问题,如果可行的话?另一种方法是尝试将观察结果从扭曲的表示中“恢复”回其原始形式,但这似乎不可行。

如有任何建议,我们将不胜感激。

最佳答案

正如所怀疑的那样,预处理包装器可用于在预处理函数之前成功地将帧保存到图像数组中。

然后可以使用 sk-video 库将该图像数组转换为 .mp4 视频。 然而,由于内存溢出的风险,必须为此构建一个单独版本的包装器,因此该方法并不理想。

关于reinforcement-learning - DQN:在将观察空间转换为 Box 环境后访问原始观察结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63088435/

相关文章:

machine-learning - 深度强化学习 (keras-rl) 早期停止

Openai-gym : Setting is_slippery=False in FrozenLake-v0

python - 如何在 Windows 上安装 OpenAI Universe 而不会出现错误代码 1?

openai-gym - 如何修改健身房的环境 CarRacing-v0?

python-3.x - 实现 Atari Breakout 时出现错误 "AttributeError: ' NoneType' 对象没有属性 'shape'

tensorflow - 如何提高机器学习性能——DQ学习模型

machine-learning - 通过强化学习进行多标准优化

python - 自定义环境的 Tensorflow 2.0 DQN 代理问题

python - DQN 理解输入和输出(层)

performance - Q学习——epsilon贪心更新