※ chainerRLからtorchRLに替えて、やり直します。
強化学習15が終了していることが前提です。
ほとんどのシェル系操作は、下のように!をつければ実行できます。
!ls
ディレクトリ移動は%
% cd drive
ランタイムについては、以下に詳しく書かれています。
秒速で無料GPUを使う。
https://qiita.com/tomo_makes/items/b3c60b10f7b25a0a5935
メモリー空間は膨大に用意されるようですが、そこにデータを入れないといけない。
Googleのインタラクティブ優先は理解できますが、
アクセスするたびに、新しいメモリー空間が用意されて、そこにデータを移すのは大変な作業です。
そこで、重宝するのがgoogleドライブ。
とても簡単にマウントできます。
マウントの詳細については、ググってください。
このドライブのマウントですが、とてもいいと思います。レンタルサーバーで気になっていたのがデータのアップロードとダウンロードでした。
この敷居はとても高くて、時間あたりの課金を考えると見積もりも大変。そもそも無料なのですが、さらにアップロードとダウンロードの手間が減ります。
それでは、実行中のipynbのホームディレクトリーはどこなのか。
試しに、前でも使ったプログラムを実行します。
import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
observation = env.reset()
for t in range(100):
env.render()
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
if done:
print("Episode finished after {} timesteps".format(t+1))
break
env.close()
エラーで動きません。
displayがダメとのこと。env.render()がダメなんです。
いろいろな変更の結果です。
!apt update
!apt install xvfb
!pip install pyvirtualdisplay
from pyvirtualdisplay import Display
disp = Display()
disp.start()
import gym
from IPython import display
import matplotlib.pyplot as plt
from matplotlib import animation
env = gym.make('CartPole-v0')
obs = env.reset()
img = []
for _ in range(100):
obs, r, disp, i = env.step(env.action_space.sample())
display.clear_output(wait=True)
img.append(env.render('rgb_array'))
if disp:
env.reset()
dpi = 72
interval = 50 # ms
plt.figure(figsize=(img[0].shape[1]/dpi,img[0].shape[0]/dpi),dpi=dpi)
patch = plt.imshow(img[0])
plt.axis=('off')
animate = lambda i: patch.set_data(img[i])
ani = animation.FuncAnimation(plt.gcf(),animate,frames=len(img),interval=interval)
display.display(display.HTML(ani.to_jshtml()))
こちらを参照してください。
https://qiita.com/ymd_h/items/c393797deb72e1779269