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?
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.
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 :)
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)