有没有办法在OpenAI健身房中禁用视频渲染,同时还能录制它?当我使用atari环境和Monitor
包装器时,默认行为是不呈现视频(视频仍然被录制并保存到磁盘)。但是在MountainCarContinuous-v0
,CartPole-v0
,Pendulum-v0
等简单环境中,呈现视频是默认行为,我无法找到如何禁用它(我仍想将其保存到磁盘)。
我正在服务器上运行我的工作,而xvfb
正式建议的解决方法不起作用。我看到很多人都遇到了问题,因为它与nvidia司机发生了冲突。我找到的最常见的解决方案是重新安装nvidia驱动程序,我无法做到这一点,因为我没有通过服务器进行root访问。
答案 0 :(得分:4)
是的,你在gym.wrappers.Monitor()
中有 video_callable = False kwargimport gym
from gym import wrappers
env = gym.make(env_name) # env_name = "Pendulum-v0"
env = wrappers.Monitor(env, aigym_path, video_callable=False ,force=True)
然后你想使用
s = env.reset() # do this for initial time-step of each episode
s_next, reward, done = env.step(a) # do this for every time-step with action 'a'
运行你的剧集
答案 1 :(得分:1)
在调用env.render()
之前先调用此函数,因为渲染不会在您的第一个render()
调用之前导入,并且此函数将替换默认的查看器构造函数。
def disable_view_window():
from gym.envs.classic_control import rendering
org_constructor = rendering.Viewer.__init__
def constructor(self, *args, **kwargs):
org_constructor(self, *args, **kwargs)
self.window.set_visible(visible=False)
rendering.Viewer.__init__ = constructor
答案 2 :(得分:0)
由于声誉低下,我无法发表评论,但是sdr2002's answer也不会停止保存视频吗?
我对宠物项目有完全相同的要求。我绕过它的唯一方法是更改gym.envs.classic_control.rendering.py并将所有新窗口设置为不可见。我认为这不是理想的解决方案,但是在我弄清楚某些问题(此时我将编辑答案)之前,这应该会有所帮助。
这是我的代码段,rendering.py的第60行:
self.window = pyglet.window.Window(width=width, height=height, display=display)
self.window.set_visible(visible=False)