Показывать тренажерный зал OpenAI только в ноутбуке Jupyter - PullRequest
0 голосов
/ 09 октября 2018

Я хочу поиграть с тренажерными залами 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

1 Ответ

0 голосов
/ 11 января 2019

Я сделал рабочий пример, который можно разветвить: https://kyso.io/eoin/openai-gym-jupyter с двумя примерами рендеринга в Jupyter - один в формате mp4, а другой в формате реального времени.

Пример .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')))
...