雑多な技術系メモ

自分用のメモ。内容は保証しません。よろしくお願いします。

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())

参考文献

https://colab.research.google.com/drive/1XQaqLeUpn299ZdDDJ7CtGtJkZ0A-Tgii#scrollTo=r27PopmiPsAX&uniqifier=4&line=2

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>