前提・実現したいこと
現在PythonのOpenAIGymをつかってCartPoleの実装をしています。
教材は「つくらながら学ぶ深層強化学習」を使っています。
実現したいことはCartPoleの可視化です.
発生している問題・エラーメッセージ
NameError Traceback (most recent call last) <ipython-input-10-649a9cc1e6eb> in <module> 6 7 for step in range(0, 200): ----> 8 frames.append(env.render(mode='rgb_array')) # framesに各時刻の画像を追加していく 9 action = np.random.choice(2) # 0(カートを左に押す), 1(カートを右に押す)をランダムに返す 10 observation, reward, done, info = env.step(action) # actionを実行する ~\anaconda3\envs\rl_env\lib\site-packages\gym\core.py in render(self, mode, **kwargs) 231 232 def render(self, mode='human', **kwargs): --> 233 return self.env.render(mode, **kwargs) 234 235 def close(self): ~\anaconda3\envs\rl_env\lib\site-packages\gym\envs\classic_control\cartpole.py in render(self, mode) 172 173 if self.viewer is None: --> 174 from gym.envs.classic_control import rendering 175 self.viewer = rendering.Viewer(screen_width, screen_height) 176 l, r, t, b = -cartwidth / 2, cartwidth / 2, cartheight / 2, -cartheight / 2 ~\anaconda3\envs\rl_env\lib\site-packages\gym\envs\classic_control\rendering.py in <module> 23 24 try: ---> 25 from pyglet.gl import * 26 except ImportError as e: 27 raise ImportError(''' ~\anaconda3\envs\rl_env\lib\site-packages\pyglet\gl\__init__.py in <module> 222 else: 223 from .carbon import CarbonConfig as Config --> 224 del base 225 226 # XXX remove NameError: name 'base' is not defined
該当のソースコード
python
1# 動画の描画関数の宣言 2# 参考URL http://nbviewer.jupyter.org/github/patrickmineault/xcorr-notebooks/blob/master/Render%20OpenAI%20gym%20as%20GIF.ipynb 3from JSAnimation.IPython_display import display_animation 4from matplotlib import animation 5from IPython.display import display 6 7 8def display_frames_as_gif(frames): 9 """ 10 Displays a list of frames as a gif, with controls 11 """ 12 plt.figure(figsize=(frames[0].shape[1]/72.0, frames[0].shape[0]/72.0), 13 dpi=72) 14 patch = plt.imshow(frames[0]) 15 plt.axis('off') 16 17 def animate(i): 18 patch.set_data(frames[i]) 19 20 anim = animation.FuncAnimation(plt.gcf(), animate, frames=len(frames), 21 interval=50) 22 23 anim.save('movie_cartpole.mp4') # 追記:動画の保存です 24 display(display_animation(anim, default_mode='loop')) 25 26# CartPoleをランダムに動かす 27 28frames = [] 29env = gym.make('CartPole-v0') 30observation = env.reset() # 最初に環境のresetが必要 31 32for step in range(0, 200): 33 frames.append(env.render(mode='rgb_array')) # framesに各時刻の画像を追加していく 34 action = np.random.choice(2) # 0(カートを左に押す), 1(カートを右に押す)をランダムに返す 35 observation, reward, done, info = env.step(action) # actionを実行する 36 37# 注意:実行後にipykernel_launcher.p...というindowが開いて固まりますが放置しておいてください
試したこと
frames.append(env.render(mode='rgb_array')) →env.render()としfor文の最後にenv.close()を追加しましたが同じようなエラーが返ってきました.
補足情報(FW/ツールのバージョンなど)
python 3.8
OpenAIGym
わかりやすく教えていただけると幸いです.
あなたの回答
tips
プレビュー