batch ppo
Tensor
该项目为强化学习提供了优化的基础设施。它将 OpenAIgym 接口扩展到多个并行环境,并允许代理在 TensorFlow 中实现并执行批量计算。作为起点,我们提供 BatchPPO,这是近端策略优化的优化实现。
如果您在研究中使用该项目的代码,请引用 TensorFlow Agents 论文:
@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 }
}
依赖项:Python 2/3、TensorFlow 1.3+、Gym、ruamel.yaml
克隆存储库并通过键入以下内容运行 PPO 算法:
python3 -m agents.scripts.train --logdir=/path/to/logdir --config=pendulum
要使用的算法在配置中定义,此处启动的pendulum
使用包含的 PPO 实现。在agents/scripts/configs.py
中查看更多预定义的配置。
如果要恢复之前开始的运行,请将--timestamp=<time>
标志添加到最后一个命令,并在运行的目录名称中提供时间戳。
要可视化指标,请从另一个终端启动 TensorBoard,然后将浏览器指向http://localhost:2222
:
tensorboard --logdir=/path/to/logdir --port=2222
要渲染视频并收集 OpenAI Gym 统计数据以上传到记分板,请输入:
python3 -m agents.scripts.visualize --logdir=/path/to/logdir/ < time > - < config > --outdir=/path/to/outdir/
我们发布这个项目作为一个起点,可以轻松实现新的强化学习想法。这些文件是修改代码时的好起点:
文件 | 内容 |
---|---|
scripts/configs.py | 指定任务和算法的实验配置。 |
scripts/networks.py | 神经网络模型。 |
scripts/train.py | 包含训练设置的可执行文件。 |
algorithms/ppo/ppo.py | PPO 算法的 TensorFlow 图。 |
要运行单元测试和 linting,请键入:
python2 -m unittest discover -p " *_test.py "
python3 -m unittest discover -p " *_test.py "
python3 -m pylint agents
如有其他问题,请在 Github 上提出问题。
我们为 OpenAI Gym 环境提供了一个批处理接口,该接口与 TensorFlow 完全集成,以实现高效的算法实现。这是通过以下核心组件实现的:
agents.tools.wrappers.ExternalProcess
是一个环境包装器,用于在外部进程内部构建 OpenAI Gym 环境。对step()
和reset()
调用以及属性访问将转发到进程并等待结果。这允许并行运行多个环境,而不受Python全局解释器锁的限制。agents.tools.BatchEnv
将 OpenAI Gym 接口扩展到批量环境。它结合了多个 OpenAI Gym 环境, step()
接受一批操作并返回一批观察结果、奖励、完成标志和信息对象。如果各个环境存在于外部流程中,它们将并行进行。agents.tools.InGraphBatchEnv
将批处理环境集成到 TensorFlow 图中,并使其step()
和reset()
函数可作为操作访问。当前批次的观察结果、最后的操作、奖励和完成标志存储在变量中并作为张量提供。agents.tools.simulate()
将图内批处理环境和强化学习算法的步骤融合到一个操作中,在训练循环内调用。这减少了会话调用的数量,并提供了一种训练未来算法的简单方法。要理解所有代码,请熟悉 TensorFlow 的控制流操作,尤其是tf.cond()
、 tf.scan()
和tf.control_dependencies()
。
这不是 Google 官方产品。