openAI Gym NameError in Google Colaboratory

匿名 (未验证) 提交于 2019-12-03 01:18:02

问题:

I've just installed openAI gym on Google Colab, but when I try to run 'CartPole-v0' environment as explained here.

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 

I get this:

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 

The problem is the same in this question about NameError in openAI gym

Nothing is being rendered. I don't know how I could use this in google colab: 'xvfb-run -s \"-screen 0 1400x900x24\" python <your_script.py>'"

回答1:

The Gym will normally render the display using GL, on your screen.

But Colab is run on the web as a notebook, it can’t display directly to your screen. It can only show the result through HTML.

If someone modifies the Gym to maniplulate WebGL, maybe someday. But not now.



回答2:

One way to render gym environment in google colab is to use pyvirtualdisplay and store rgb frame array while running environment. Environment frames can be animated using animation feature of matplotlib and HTML function used for Ipython display module. You can find the implementation here. Make sure you install required libraries which you can find in the first cell of the colab. In case the first link for google colab doesn't work you can see this one.



回答3:

Javier, Could you find any solution to this issue? I am trying to use the OenAIs new environment "gym retro" and getting same kind of error when calling make. But as you said I think using xvfb should resolve the issue and let the program run, but of course we wouldn't be able to see the environment graphically. But the issue is that does not allow xvfb to run in the background! xvfb :99 & raises OSError: Background processes not supported.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!