基于web-mvc的最干净深度强化学习实现
mvc的Python项目详细描述
MVC日间行车灯
基于带有完整单元测试的web mvc架构的清晰深层强化学习代码
动机
实现深度强化学习算法很容易编造混乱的代码,因为环境和代理之间的交互循环需要类之间的大量依赖关系。 即使是深度学习也需要特殊技能来构建干净的代码。
为了跳出框框,web工程师花了数年时间研究mvc(model-view-controller)体系结构,用整洁的代码构建系统,以处理web和用户之间的交互。 在这里,我发现这种mvc体系结构对于深入的强化学习实现是非常有用的。 mvc为依赖性较小的体系结构提供了方向,这对于单元测试来说会更好。
安装
英伟达Docker
你可以使用Docker来设置和运行实验。
$ ./scripts/build.sh
一旦构建了容器,就可以通过./scripts/up.sh
使用nvidia运行时启动容器。
$ ./scripts/up.sh
root@a84ab59aa668:/home/app# ls
Dockerfile README.md example.confing.json graphs mvc scripts tests
LICENSE examples logs requirements.txt test.sh tools
root@a84ab59aa668:/home/app#
手动
您需要安装用requirements.txt
和tensorflow编写的包。
$ pip install -r requirements.txt
$ pip install tensorflow-gpu tensorflow-probability-gpu
# if you run example scripts
$ pip install pybullet roboschool
如果您在安装tensorflow probability时遇到问题,请检查tensorflow版本。
作为库安装
pypi上也提供了这个存储库。 您可以在mvc drl的基础上实现额外的算法。
$ pip install mvc
:警告:此报告正在开发中,因此接口可能经常更改。
算法
对于学术用途,我们提供您可能需要比较的基线实现。
- [X]最近的策略优化
- [X]深度确定性政策梯度
- [X]软演员评论家
蚂蚁性能
每一分代表10集的平均评价奖励。 与一篇Soft Actor-Critic的论文取得了几乎相同的性能。
ppo
$ python -m examples.ppo --env Ant-v2
ddpg
$ python -m examples.ddpg --env Ant-v2
sac
$ python -m examples.sac --env Ant-v2 --reward-scale 5
比较
日志可视化
所有日志记录数据都作为csv文件和可视化工具数据保存在logs
目录下。
在示例代码中使用--log-adapter
选项将tensorboard和visdom切换为可视化(默认值:tensorboard)。
张力板
$ tensorboard --logdir logs
面容
要使用visdom,需要填写visdom服务器的主机信息。
$ mv example.config.json config.json
$ vim config.json # fill visdom section
在运行实验之前,启动visdom服务器。
$ visdom
matplotlib
通过直接指向csv文件,可以使用tools/plot_csv.py
可视化。
$ python tools/plot_csv.py <path to csv> <path to csv> ...
默认情况下,图例是用文件路径设置的。
如果要手动设置,请使用label
选项。
$ python tools/plot_csv.py --label=experiment1 --label=experiment2 <path to csv> <path to csv>
单元测试
为了保证代码质量,包括神经网络在内的所有函数和类都必须进行单元测试。
下面的命令运行tests
目录下的所有单元测试。
$ ./test.sh