在OpenAI健身房中禁用环境视频渲染

时间:2017-12-05 23:02:36

标签: video openai-gym

有没有办法在OpenAI健身房中禁用视频渲染,同时还能录制它?当我使用atari环境和Monitor包装器时,默认行为是不呈现视频(视频仍然被录制并保存到磁盘)。但是在MountainCarContinuous-v0CartPole-v0Pendulum-v0等简单环境中,呈现视频是默认行为,我无法找到如何禁用它(我仍想将其保存到磁盘)。

我正在服务器上运行我的工作,而xvfb正式建议的解决方法不起作用。我看到很多人都遇到了问题,因为它与nvidia司机发生了冲突。我找到的最常见的解决方案是重新安装nvidia驱动程序,我无法做到这一点,因为我没有通过服务器进行root访问。

3 个答案:

答案 0 :(得分:4)

是的,你在gym.wrappers.Monitor()

中有 video_callable = False kwarg
import 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)