仅在Jupyter笔记本中显示OpenAI健身房

2024-04-29 15:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在笔记本上玩OpenAI健身房,把健身房渲染成内联的。

下面是一个基本示例:

import matplotlib.pyplot as plt
import gym
from IPython import display
%matplotlib inline

env = gym.make('CartPole-v0')
env.reset()

for i in range(25):
   plt.imshow(env.render(mode='rgb_array'))
   display.display(plt.gcf())    
   display.clear_output(wait=True)
   env.step(env.action_space.sample()) # take a random action

env.close()

这很有效,我可以在笔记本上看到健身房:

gym in notebook

但是!它还会打开一个交互式窗口,显示完全相同的内容。我不希望此窗口打开:

interactive window


Tags: fromimportenv示例matplotlibasipythondisplay
1条回答
网友
1楼 · 发布于 2024-04-29 15:24:30

我在这里制作了一个工作示例,您可以使用Jupyter中的两个渲染示例来派生:https://kyso.io/eoin/openai-gym-jupyter-一个是mp4,另一个是实时gif。

.mp4示例非常简单。

import gym
from gym import wrappers

env = gym.make('SpaceInvaders-v0')
env = wrappers.Monitor(env, "./gym-results", force=True)
env.reset()
for _ in range(1000):
    action = env.action_space.sample()
    observation, reward, done, info = env.step(action)
    if done: break
env.close()

然后在新的牢房里

import io
import base64
from IPython.display import HTML

video = io.open('./gym-results/openaigym.video.%s.video000000.mp4' % env.file_infix, 'r+b').read()
encoded = base64.b64encode(video)
HTML(data='''
    <video width="360" height="auto" alt="test" controls><source src="data:video/mp4;base64,{0}" type="video/mp4" /></video>'''
.format(encoded.decode('ascii')))

相关问题 更多 >