Il est destiné aux étudiants du premier cycle du secondaire aux étudiants universitaires qui découvrent l'IA. On suppose que vous avez terminé l'apprentissage par renforcement 28.
Au milieu de l'apprentissage par renforcement, par exemple, enregistrez l'agent toutes les 10000 pas, Je voudrais jouer un par un en continu. Je me demande si cela permet de voir plus facilement le processus de croissance de l'apprentissage. Vous pouvez le voir sur Youtube, etc., et ça va de mieux en mieux.
Si vous effectuez un apprentissage par renforcement avec chokozainerRL, un dossier sera créé comme celui-ci. Pour lire ceci dans l'ordre, procédez comme suit.
import os
import re
testdir='mydrive/OpenAI/CartPole/result_dqn_choko'
files = os.listdir(testdir)
files_dir = [f for f in files if os.path.isdir(os.path.join(testdir, f))]
agentList=[]
for f in files_dir:
if re.search('_',f):
f2=f.split('_')
agentList.append([int(f2[0]),f])
agentList.sort()
Je vais le faire avec Google Drive monté. Si vous triez tel quel, il sera trié sous forme de chaîne de caractères, donc il sera dans un ordre étrange. Par conséquent, seule la valeur numérique précédente est retirée afin de pouvoir être triée.
En supposant que env et agent sont définis, procédez comme suit.
from matplotlib import animation
import matplotlib.pyplot as plt
frames = []
for item in agentList:
agent.load(testdir+'/'+item[1])
obs = env.reset()
done = False
R = 0
t = 0
while not done and t < 200:
frames.append(env.render(mode = 'rgb_array'))
action = agent.act(obs)
obs, r, done, _ = env.step(action)
R += r
t += 1
print('test episode:', item[1], 'R:', R)
agent.stop_episode()
env.close()
from IPython.display import HTML
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')
def animate(i):
patch.set_data(frames[i])
anim = animation.FuncAnimation(plt.gcf(), animate, frames=len(frames),interval=50)
anim.save(testdir+"grouth.mp4")
HTML(anim.to_jshtml())
Recommended Posts