Ce projet fournit une infrastructure optimisée pour l'apprentissage par renforcement. Il étend l'interface OpenAI gym à plusieurs environnements parallèles et permet aux agents d'être implémentés dans TensorFlow et d'effectuer des calculs par lots. Comme point de départ, nous fournissons BatchPPO, une implémentation optimisée de Proximal Policy Optimization.
Veuillez citer l'article TensorFlow Agents si vous utilisez le code de ce projet dans votre recherche :
@article { hafner2017agents ,
title = { TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow } ,
author = { Hafner, Danijar and Davidson, James and Vanhoucke, Vincent } ,
journal = { arXiv preprint arXiv:1709.02878 } ,
year = { 2017 }
}
Dépendances : Python 2/3, TensorFlow 1.3+, Gym, ruamel.yaml
Clonez le référentiel et exécutez l'algorithme PPO en tapant :
python3 -m agents.scripts.train --logdir=/path/to/logdir --config=pendulum
L'algorithme à utiliser est défini dans la configuration et pendulum
démarré ici utilise l'implémentation PPO incluse. Découvrez plus de configurations prédéfinies dans agents/scripts/configs.py
.
Si vous souhaitez reprendre une exécution précédemment démarrée, ajoutez l'indicateur --timestamp=<time>
à la dernière commande et fournissez l'horodatage dans le nom du répertoire de votre exécution.
Pour visualiser les métriques, démarrez TensorBoard depuis un autre terminal, puis pointez votre navigateur sur http://localhost:2222
:
tensorboard --logdir=/path/to/logdir --port=2222
Pour rendre des vidéos et collecter des statistiques OpenAI Gym à télécharger sur le tableau de bord, tapez :
python3 -m agents.scripts.visualize --logdir=/path/to/logdir/ < time > - < config > --outdir=/path/to/outdir/
Nous publions ce projet comme point de départ qui facilite la mise en œuvre de nouvelles idées d'apprentissage par renforcement. Ces fichiers sont de bons points de départ pour modifier le code :
Déposer | Contenu |
---|---|
scripts/configs.py | Configurations d'expérimentation spécifiant les tâches et les algorithmes. |
scripts/networks.py | Modèles de réseaux neuronaux. |
scripts/train.py | Le fichier exécutable contenant la configuration de la formation. |
algorithms/ppo/ppo.py | Le graphique TensorFlow pour l'algorithme PPO. |
Pour exécuter des tests unitaires et du peluchage, tapez :
python2 -m unittest discover -p " *_test.py "
python3 -m unittest discover -p " *_test.py "
python3 -m pylint agents
Pour d'autres questions, veuillez ouvrir un ticket sur Github.
Nous incluons une interface par lots pour les environnements OpenAI Gym qui s'intègre entièrement à TensorFlow pour des implémentations efficaces d'algorithmes. Ceci est réalisé grâce à ces composants de base :
agents.tools.wrappers.ExternalProcess
est un wrapper d'environnement qui construit un environnement OpenAI Gym à l'intérieur d'un processus externe. Les appels à step()
et reset()
, ainsi que l'accès aux attributs, sont transmis au processus et attendent le résultat. Cela permet d'exécuter plusieurs environnements en parallèle sans être limité par le verrouillage global de l'interpréteur Python.agents.tools.BatchEnv
étend l'interface OpenAI Gym à des lots d'environnements. Il combine plusieurs environnements OpenAI Gym, avec step()
acceptant un lot d'actions et renvoyant un lot d'observations, de récompenses, d'indicateurs terminés et d'objets d'information. Si les environnements individuels vivent dans des processus externes, ils seront mis en place en parallèle.agents.tools.InGraphBatchEnv
intègre un environnement batch dans le graphique TensorFlow et rend ses fonctions step()
et reset()
accessibles en tant qu'opérations. Le lot actuel d'observations, de dernières actions, de récompenses et d'indicateurs terminés est stocké dans des variables et mis à disposition sous forme de tenseurs.agents.tools.simulate()
fusionne l'étape d'un environnement batch dans le graphique et un algorithme d'apprentissage par renforcement en une seule opération à appeler dans la boucle de formation. Cela réduit le nombre d’appels de session et fournit un moyen simple de former les futurs algorithmes. Pour comprendre tout le code, veuillez vous familiariser avec les opérations de flux de contrôle de TensorFlow, en particulier tf.cond()
, tf.scan()
et tf.control_dependencies()
.
Ce n'est pas un produit Google officiel.