web-dev-qa-db-fra.com

openAI Gym NameError dans Google Colaboratory

Je viens d'installer OpenAI gym sur Google Colab, mais lorsque j'essaie de lancer l'environnement 'CartPole-v0' comme a expliqué ici .

Code:

import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
    observation = env.reset()
    for t in range(100):
        env.render()
        print(observation)
        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)
        if done:
            print("Episode finished after {} timesteps".format(t+1))
            break

J'ai compris:

WARN: gym.spaces.Box autodetected dtype as <class 'numpy.float32'>. Please provide explicit dtype.
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-19-a81cbed23ce4> in <module>()
      4     observation = env.reset()
      5     for t in range(100):
----> 6         env.render()
      7         print(observation)
      8         action = env.action_space.sample()

/content/gym/gym/core.py in render(self, mode)
    282 
    283     def render(self, mode='human'):
--> 284         return self.env.render(mode)
    285 
    286     def close(self):

/content/gym/gym/envs/classic_control/cartpole.py in render(self, mode)
    104 
    105         if self.viewer is None:
--> 106             from gym.envs.classic_control import rendering
    107             self.viewer = rendering.Viewer(screen_width, screen_height)
    108             l,r,t,b = -cartwidth/2, cartwidth/2, cartheight/2, -cartheight/2

/content/gym/gym/envs/classic_control/rendering.py in <module>()
     21 
     22 try:
---> 23     from pyglet.gl import *
     24 except ImportError as e:
     25     reraise(prefix="Error occured while running `from pyglet.gl import *`",suffix="HINT: make sure you have OpenGL install. On Ubuntu, you can run 'apt-get install python-opengl'. If you're running on a server, you may need a virtual frame buffer; something like this should work: 'xvfb-run -s \"-screen 0 1400x900x24\" python <your_script.py>'")

/usr/local/lib/python3.6/dist-packages/pyglet/gl/__init__.py in <module>()
    225     else:
    226         from .carbon import CarbonConfig as Config
--> 227 del base
    228 
    229 # XXX remove

NameError: name 'base' is not defined

Le problème est le même dans cette question sur NameError dans openAI gym

Rien n'est rendu. Je ne sais pas comment utiliser ceci dans google colab: 'xvfb-run -s \"-screen 0 1400x900x24\" python <your_script.py>'"

Le gymnase rendra normalement l'affichage en utilisant GL, sur votre écran.

Mais Colab est exécuté sur le Web comme un ordinateur portable, il ne peut pas être affiché directement sur votre écran. Il ne peut afficher le résultat que via HTML.

Si quelqu'un modifie le gymnase pour modifier WebGL, peut-être un jour. Mais pas maintenant.

2

Une façon de rendre l’environnement de la salle de sport dans google colab consiste à utiliser pyvirtualdisplay et à stocker le tableau d’images en RVB lorsqu’il est exécuté. Les cadres d'environnement peuvent être animés à l'aide de la fonctionnalité d'animation de matplotlib et de la fonction HTML utilisée pour le module d'affichage Ipython. Vous pouvez trouver l'implémentation here . Assurez-vous d’installer les bibliothèques requises que vous pouvez trouver dans la première cellule de la colonne. Dans le cas où le premier lien pour google colab ne fonctionne pas, vous pouvez voir celui-ci

5

Javier, Pourriez-vous trouver une solution à ce problème? J'essaie d'utiliser le nouvel environnement OenAI "" gym retro "et j'obtiens le même type d'erreur en appelant make. Mais comme vous l'avez dit, je pense que l'utilisation de xvfb devrait résoudre le problème et laisser le programme s'exécuter, mais nous ne serions bien sûr pas en mesure de visualiser l'environnement de manière graphique. Mais le problème est que cela ne permet pas à xvfb de fonctionner en arrière-plan! xvfb: 99 & soulève OSError: processus d'arrière-plan non pris en charge.

1
user650585