open ai gymについての調査録
ゲームの動画を保存する
cartpoleを適当に実行し、ゲームの動画を保存する
import gym env = gym.make("CartPole-v0") env = gym.wrappers.Monitor(env, "./", force=True) # 現在のディレクトリにmq4とjsonが保存される done = False frames = [] env.reset() while done is False: frames.append(env.render(mode="rgb_array")) _, _, done, _ = env.step(1)
jupyter内でgymのゲーム動画を表示する
以下jupyter内でgymのゲームの動画を生成するサンプルコード
import gym import matplotlib.pyplot as plt import matplotlib.animation import numpy as np from IPython.display import HTML from pyvirtualdisplay import Display import os env = gym.make("BreakoutDeterministic-v4") env = gym.wrappers.Monitor(env,"./",force=True) display = Display(visible=0, size=(1024, 768)) display.start() os.environ["DISPLAY"] = ":" + str(display.display) + "." + str(display.screen) frames = [] done = False env.reset() while done is False: frames.append(env.render(mode = 'rgb_array')) _, _, done, _ =env.step(1) plt.figure(figsize=(frames[0].shape[1] / 72.0, frames[0].shape[0] / 72.0), dpi = 72) patch = plt.imshow(frames[0]) plt.axis('off') animate = lambda i: patch.set_data(frames[i]) ani = matplotlib.animation.FuncAnimation(plt.gcf(), animate, frames=len(frames), interval = 50) HTML(ani.to_jshtml())
参考文献
gymのwrappers
- envを拡張するようなもの
jupyterでhtmlを埋め込む
In [1]: from IPython.display import HTML In [2]: HTML("<h1>hello</h1>") Out[2]: <IPython.core.display.HTML object>