web-dev-qa-db-fra.com

Afficher uniquement la salle de sport OpenAI dans le cahier Jupyter

Je veux jouer avec les salles de sport OpenAI dans un cahier, la salle de sport étant rendue en ligne.

Voici un exemple de base:

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()

Cela fonctionne et je vois la salle de sport dans le cahier:

 gym in notebook

Mais! il ouvre également une fenêtre interactive qui montre exactement la même chose. Je ne veux pas que cette fenêtre soit ouverte:

 interactive window

4
MasterScrat

J'ai fait ici un exemple pratique que vous pouvez créer: https://kyso.io/eoin/openai-gym-jupyter avec deux exemples de rendu dans Jupyter - l'un en tant que MP4 et l'autre en tant que gif en temps réel.

L’exemple .mp4 est assez simple.

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()

Puis dans une nouvelle cellule

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')))
1
Eoin Murray