web-dev-qa-db-ja.com

Google ColaboratoryのopenAI Gym NameError

Google ColabにopenAIジムをインストールしたばかりですが、「CartPole-v0」環境を ここで説明するように実行しようとすると

コード:

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

私はこれを手に入れます:

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

問題は openAI gym のNameErrorに関するこの質問でも同じです

何もレンダリングされていません。これをgoogle colabでどのように使用できるかわかりません:'xvfb-run -s \"-screen 0 1400x900x24\" python <your_script.py>'"

ジムは通常、画面上にGLを使用してディスプレイをレンダリングします。

ただし、ColabはノートブックとしてWeb上で実行され、画面に直接表示することはできません。 HTMLでのみ結果を表示できます。

誰かがジムを変更してWebGLを操作した場合、おそらくいつかは。しかし今ではありません。

Google Colabでジム環境をレンダリングする1つの方法は、pyvirtualdisplayを使用して、環境の実行中にRGBフレーム配列を格納することです。環境フレームは、matplotlibのアニメーション機能とIpython表示モジュールに使用されるHTML関数を使用してアニメーション化できます。あなたは実装を見つけることができます ここ 。 colabの最初のセルにある必要なライブラリをインストールしてください。 google colabの最初のリンクが機能しない場合は、 this one を確認できます。

ハビエル、この問題の解決策はありませんか? OenAIの新しい環境「gym retro」を使用しようとしていますが、makeを呼び出すときに同じ種類のエラーが発生します。しかし、あなたが言ったように、xvfbを使用すると問題が解決し、プログラムを実行できるようになると思いますが、もちろん、環境をグラフィカルに表示することはできません。しかし問題は、xvfbをバックグラウンドで実行できないことです。 xvfb:99&OSErrorを発生させます:バックグラウンドプロセスはサポートされていません。

0
user650585