web-dev-qa-db-fra.com

Comment rendre OpenAI Gym dans Google Colab?

J'essaie d'utiliser OpenAI gym dans google colab. Comme le portable fonctionne sur un serveur distant, je ne peux pas rendre l'environnement du gymnase.

J'ai trouvé une solution pour le portable Jupyter, cependant, ces solutions ne fonctionnent pas avec colab car je n'ai pas accès au serveur distant.

Je me demande si quelqu'un connaît une solution de contournement pour cela qui fonctionne avec Google Colab?

8
SiaFahim

La réponse de Korakot n'est pas correcte.

Vous pouvez en effet restituer OpenAi Gym en colaboratoire, albiet en utilisant lentement autre chose que matplotlib.

Voici comment:

install xvfb & autres dépendances

!apt-get install -y xvfb python-opengl > /dev/null 2>&1

& install affichage pyvirtuel:

!pip install gym pyvirtualdisplay > /dev/null 2>&1

puis importez toutes vos bibliothèques, y compris matplotlib & ipythondisplay:

import gym
import numpy as np
import matplotlib.pyplot as plt
from IPython import display as ipythondisplay

alors vous voulez importer l'affichage de l'affichage pyvirtuel et initialiser la taille de votre écran, dans cet exemple 400x300 ...:

from pyvirtualdisplay import Display
display = Display(visible=0, size=(400, 300))
display.start()

last but not least, en utilisant "rgb_array" render de gym fonctionnellement, effectuez un rendu sur une variable "Screen", puis tracez la variable screen en utilisant Matplotlib! (rendu indirect à l'aide de l'affichage Ipython)

env = gym.make("CartPole-v0")
env.reset()
prev_screen = env.render(mode='rgb_array')
plt.imshow(prev_screen)

for i in range(50):
  action = env.action_space.sample()
  obs, reward, done, info = env.step(action)
  screen = env.render(mode='rgb_array')

  plt.imshow(screen)
  ipythondisplay.clear_output(wait=True)
  ipythondisplay.display(plt.gcf())

  if done:
    break

ipythondisplay.clear_output(wait=True)
env.close()

Lien vers mon cartable de démonstration du carnet de travail du Colaboratory:

https://colab.research.google.com/drive/16gZuQlwxmxR5ZWYLZvBeq3bTdFfb1r_6

Remarque: tous les environnements de gym ne prennent pas en charge le mode de rendu "rgb_array", mais la plupart des environnements de base le font.

8
P. Conyngham

La meilleure solution que j'ai trouvée après avoir passé d'innombrables heures sur ce problème est de loin l'enregistrement et la lecture de vidéos. Il est très proche de la vraie fonction de rendu UX.

Voici un bloc-notes Google colab qui enregistre et rend la vidéo. https://colab.research.google.com/drive/12osEZByXOlGy8J- MSpkl3faObhzPGIrB

prendre plaisir :)

1
Mathias Asberg

Essaye ça :-

!apt-get install python-opengl -y

!apt install xvfb -y

!pip install pyvirtualdisplay

!pip install piglet


from pyvirtualdisplay import Display
Display().start()

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

env = gym.make('CartPole-v0')
env.reset()
img = plt.imshow(env.render('rgb_array')) # only call this once
for _ in range(40):
    img.set_data(env.render('rgb_array')) # just update the data
    display.display(plt.gcf())
    display.clear_output(wait=True)
    action = env.action_space.sample()
    env.step(action)

Cela a fonctionné pour moi, donc je suppose que cela devrait également fonctionner pour vous.

1
Shrawan Agrawal