python - 仅在 Jupyter notebook 中显示 OpenAI gym

标签 python python-3.x jupyter-notebook reinforcement-learning openai-gym

我想在笔记本中玩 OpenAI gyms,gym 是内联渲染的。

这是一个基本的例子:

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

最佳答案

我在这里做了一个你可以 fork 的工作示例:https://kyso.io/eoin/openai-gym-jupyter有两个在 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')))

关于python - 仅在 Jupyter notebook 中显示 OpenAI gym,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52726475/

相关文章:

python - 列表的动态列表的组织

Python:遍历打开的文件

当我用变量替换硬编码值时,Python SQL 查询返回 "ORA-00936: missing expression"

python-3.x - Python 向量化与 Julia for 循环

python - 如何将这个列表理解扩展到 for 循环,以理解这个递归函数?

python - 如何在 Jupyter Notebook 中绘图后抑制文本输出

python - 如何更改包含数字的所有字符串单元格以在 pandas 中同时 float ?

python - 在 Python 模块中隐藏中间计算

python - 如何在 Tensorflow 中恢复训练好的模型并计算测试精度

python - 绘制 numpy 数组 : setting axis scale