我正在尝试为一个 RL 项目工作,我需要在某个 Atari 环境中测试这些想法,我选择 Pong 来测试最初的想法。为了方便起见,我使用 stable-baselines3 1.6.2 版。我的健身房版本是 0.21.0。但是在调用 env.render 时出现以下错误
Exception has occurred: TypeError (note: full exception trace is shown but execution is paused at: _run_module_as_main)
render() takes 1 positional argument but 2 were given
File "/home/s222147455/.conda/envs/new_method/lib/python3.8/site-packages/gym/core.py", line 295, in render
return self.env.render(mode, **kwargs)
File "/home/s222147455/.conda/envs/new_method/lib/python3.8/site-packages/gym/core.py", line 295, in render
return self.env.render(mode, **kwargs)
File "/home/s222147455/.conda/envs/new_method/lib/python3.8/site-packages/gym/core.py", line 295, in render
return self.env.render(mode, **kwargs)
[Previous line repeated 4 more times]
健身房图书馆包裹如下,
env = AtariWrapper(gym.make(args.env), noop_max=30, frame_skip=4, screen_size=84, terminal_on_life_loss=True, clip_reward=False)
env = DummyVecEnv([lambda: env])
env = VecFrameStack(env, n_stack=4, channels_order='first')
我用谷歌搜索了这个问题,发现健身房版本有些不匹配。但我无法完全解决问题
VecFrameStack
不继承它环绕的 render_mode
的 env
。不知道为什么会这样,但快速破解/解决方法应该有效:
...
env = DummyVecEnv([lambda: env])
env = VecFrameStack(env, n_stack=4, channels_order='first')
env.render_mode = "rgb_array"
...