[PYTHON] Verbessertes Lernen 7 Protokollieren Sie die Ausgabe von Lerndaten

Es wird davon ausgegangen, dass Sie die Stärkung des Lernens abgeschlossen haben 6.

Ich möchte eine Verbindung zu ChainerUI herstellen, aber vorher werde ich die Trainingsdaten organisieren. Wir werden nach train.py von ChainerRL fortfahren, das in Stärkung des Lernens 6 erstellt wurde.

Wichtig ist, dass ab dem 13. November 2019 die folgende Methode am Ende der chainerRL-Kurzreferenz zu einem Fehler führt.

import logging
import sys
gym.undo_logger_setup()  # Turn off gym's default logger settings
logging.basicConfig(level=logging.INFO, stream=sys.stdout, format='')

chainerrl.experiments.train_agent_with_evaluation(
    agent, env,
    steps=2000,           # Train the agent for 2000 steps
    eval_n_runs=10,       # 10 episodes are sampled for each evaluation
    max_episode_len=200,  # Maximum length of each episodes
    eval_interval=1000,   # Evaluate the agent after every 1000 steps
    outdir='result')      # Save everything to 'result' directory

Schreiben Sie den vollständigen Text wie folgt neu, einschließlich Änderungen.

train_plus.py


import chainer
import chainer.functions as F
import chainer.links as L
import chainerrl
import gym
import numpy as np

env = gym.make('CartPole-v0')
print('observation space:', env.observation_space)
print('action space:', env.action_space)

obs = env.reset()
#env.render()
print('initial observation:', obs)

action = env.action_space.sample()
obs, r, done, info = env.step(action)
print('next observation:', obs)
print('reward:', r)
print('done:', done)
print('info:', info)

class QFunction(chainer.Chain):

    def __init__(self, obs_size, n_actions, n_hidden_channels=50):
        super().__init__()
        with self.init_scope():
            self.l0 = L.Linear(obs_size, n_hidden_channels)
            self.l1 = L.Linear(n_hidden_channels, n_hidden_channels)
            self.l2 = L.Linear(n_hidden_channels, n_actions)

    def __call__(self, x, test=False):
        """
        Args:
            x (ndarray or chainer.Variable): An observation
            test (bool): a flag indicating whether it is in test mode
        """
        h = F.tanh(self.l0(x))
        h = F.tanh(self.l1(h))
        return chainerrl.action_value.DiscreteActionValue(self.l2(h))

obs_size = env.observation_space.shape[0]
n_actions = env.action_space.n
q_func = QFunction(obs_size, n_actions)
# Use Adam to optimize q_func. eps=1e-2 is for stability.
optimizer = chainer.optimizers.Adam(eps=1e-2)
optimizer.setup(q_func)
# Set the discount factor that discounts future rewards.
gamma = 0.95

# Use epsilon-greedy for exploration
explorer = chainerrl.explorers.ConstantEpsilonGreedy(
    epsilon=0.3, random_action_func=env.action_space.sample)

# DQN uses Experience Replay.
# Specify a replay buffer and its capacity.
replay_buffer = chainerrl.replay_buffer.ReplayBuffer(capacity=10 ** 6)

# Since observations from CartPole-v0 is numpy.float64 while
# Chainer only accepts numpy.float32 by default, specify
# a converter as a feature extractor function phi.
phi = lambda x: x.astype(np.float32, copy=False)

# Now create an agent that will interact with the environment.
agent = chainerrl.agents.DoubleDQN(
    q_func, optimizer, replay_buffer, gamma, explorer,
    replay_start_size=500, update_interval=1,
    target_update_interval=100, phi=phi)
# Set up the logger to print info messages for understandability.
import logging
import sys
logging.basicConfig(level=logging.INFO, stream=sys.stdout, format='')

chainerrl.experiments.train_agent_with_evaluation(
    agent, env,
    steps=20000,           # Train the agent for 2000 steps
    eval_n_steps=None,       # 10 episodes are sampled for each evaluation
    eval_n_episodes=10,       # 10 episodes are sampled for each evaluation
    eval_max_episode_len=200,  # Maximum length of each episodes
    eval_interval=1000,   # Evaluate the agent after every 1000 steps
    outdir='result')      # Save everything to 'result' directory
print('Finished.')
agent.save('agent')
env.close()

Dadurch wird die Datei "results.txt" im Ergebnisordner erstellt. Das chainerrl wird auf github veröffentlicht und die dortige Quelldatei enthält eine Beschreibung.

Recommended Posts

Verbessertes Lernen 7 Protokollieren Sie die Ausgabe von Lerndaten
[Aktienkursanalyse] Pandas lernen mit fiktiven Daten (002: Protokollausgabe)
[Einführung] Stärkung des Lernens
Python-Lernausgabe
Zukünftiges Verstärkungslernen_2
Zukünftiges Verstärkungslernen_1
Erweitertes Lernen 1 Python-Installation
Stärkung des Lernens 3 OpenAI-Installation
Stärkung des Lernens der dritten Zeile
[Lernen stärken] Banditenaufgabe
Python + Unity Enhanced Learning (Lernen)
Stärkung des Lernens 1 Einführungsausgabe
Datensatz für maschinelles Lernen
Stärkung des Lernens 18 Colaboratory + Acrobat + ChainerRL
Stärkung des Lernens 17 Colaboratory + CartPole + ChainerRL
Stärkung des Lernens 28 colaboratory + OpenAI + chainerRL
Stärkung des Lernens 19 Colaboratory + Mountain_car + ChainerRL
Stärkung des Lernens 2 Installation von Chainerrl
[Lernen stärken] Tracking durch Multi-Agent
Stärkung des Lernens 6 First Chainer RL
Verbessertes Lernen ab Python
Stärkung des Lernens 20 Colaboratory + Pendulum + ChainerRL
Verstärkungslernen 5 Versuchen Sie, CartPole zu programmieren?
Verstärkungslernen 9 ChainerRL Magic Remodeling
Lernen stärken Lernen Sie von heute
Lernnotizen zur Python-Datenanalyse
Infra_Data Science Course Output
Stärkung des Lernens 4 CartPole erster Schritt
Tiefe Stärkung des Lernens 1 Einführung in die Stärkung des Lernens
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
DeepMind Enhanced Learning Framework Acme
Verstärktes Lernen: Beschleunigen Sie die Wertiteration
Protokolldatei mit Job (Notizbuch) von Cloud Pak for Data ausgeben
TF2RL: Erweiterte Lernbibliothek für TensorFlow2.x
Verstärkungslernen 34 Erstellen Sie fortlaufende Agentenvideos
Lernen stärken 13 Probieren Sie Mountain_car mit ChainerRL aus.
Python + Unity Verbesserte Erstellung von Lernumgebungen
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
Stärkung des Lernens 22 Colaboratory + CartPole + ChainerRL + A3C
Ausgabe der Lernmethode für die LPIC-Erfassung
Entdecken Sie das Labyrinth mit erweitertem Lernen
Trainingsdaten aufblasen [Image Date Generator]
Unit Test Log Ausgabe mit Python
Speichersparende Matrixkonvertierung von Protokolldaten
Stärkung des Lernens 8 Versuchen Sie, die Chainer-Benutzeroberfläche zu verwenden
Maschinelles Lernen in Delemas (Datenerfassung)
Stärkung des Lernens 24 Colaboratory + CartPole + ChainerRL + ACER
Verstärkungslernen 3 Dynamische Planungsmethode / TD-Methode
Vorverarbeitung beim maschinellen Lernen 2 Datenerfassung
Deep Strengthing Learning 3 Praktische Ausgabe: Block Breaking
Ich habe versucht, mit PyBrain verstärkt zu lernen
Vorverarbeitung beim maschinellen Lernen 4 Datenkonvertierung
Grundlegendes maschinelles Lernverfahren: ② Daten vorbereiten
Sammeln von Daten zum maschinellen Lernen
Lerne beim Machen! Tiefes Verstärkungslernen_1