查看关于 rlpyt 的更多文章请点击这里。
rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。
在训练强化学习模型的过程中,rlpyt 产生的大量训练日志看起来无比枯燥,本文展示了如何利用 viskit 把这些日志数据可视化。
▶▶ viskit是什么
viskit是rllab的一个可视化组件,rllab是一个曾经有一定知名度的强化学习框架,但可惜的是它早就停止开发了。不过,viskit却被人单独抽了出来,作为一个可视化工具来使用。rlpyt 生成的训练日志也可以利用它来可视化,这是因为 rlpyt 生成的日志格式遵循了 viskit 的规范。
viskit的功能是:读取它能解析的日志数据,启动一个网页,在网页上用图形展示日志内容。
文章来源:https://www.codelast.com/
▶▶ 安装viskit
把代码下载到本地:
git clone git@github.com:vitchyr/viskit.git
cd viskit/
安装viskit的依赖包:
conda install -c anaconda matplotlibconda install -c anaconda flaskconda install -c anaconda plotly
注意,在这里我是在Anaconda环境里装的,如果你不用Anaconda,也可以用对应的pip install命令来装。
需要flask是因为viskit会启动一个网页来可视化地展示数据,它正是使用了Flask来实现的(Flask 是一个 Python 实现的 Web 开发微框架)。
文章来源:https://www.codelast.com/
▶▶ 使用viskit
在使用viskit之前,首先你得有供它读取的日志。这里假设日志的路径为:/path/to/your/log/dir
这个路径下的日志文件名应该是类似于这样的:
你可以用 rlpyt 跑一下自带的example,就会生成这样的日志数据。
设置PYTHONPATH:
export PYTHONPATH=/path/to/your/viskit:$PYTHONPATH
这里的 /path/to/your/viskit 是你的viskit源码所在路径。
运行viskit:
python viskit/frontend.py /path/to/your/log/dir
最后一个参数就是日志所在的目录。
不出错的话,你会看到命令行有这样的输出:
Importing data from ['/path/to/your/log/dir']...Reading /path/to/your/log/dir/progress.csvView http://localhost:5000 in your browser* Serving Flask app "frontend" (lazy loading)* Environment: productionWARNING: This is a development server. Do not use it in a production deployment.Use a production WSGI server instead.* Debug mode: off* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
文章来源:https://www.codelast.com/
▶▶ 效果展示
用浏览器访问 http://localhost:5000/ 即可打开可视化网页:
在上面的“Y-Axis Attributes”下拉列表框里可以选择要把哪些指标绘制成图形,点击“Upadte”按钮即可刷新下面的图像。
文章来源:https://www.codelast.com/
各种指标图:
文章来源:https://www.codelast.com/
比较酷炫的是,这些图是可以进行缩放等操作的,在图的右上方有一排工具按钮,点一下就看到效果了。
文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤
转载需注明出处:codelast.com
感谢关注我的微信公众号(微信扫一扫):
你好,我运行了example_1.py后生成了debug.log文件,我在看这个文件的时候,发现,即使是Return,也有ReturnAverage,ReturnStd,ReturnMedian,ReturnMin,ReturnMax等,我原本以为这几个值都与迭代次数有关,即“dqn_pong_0 itr #13 optimizing over 250 iterations”中的250有关,改文件minibatch_rl.py后,此处的250被我改为1后,ReturnAverage,ReturnMedian,ReturnMin,ReturnMax几个值相同了,验证了我的想法,但是,ReturnStd这个值却变为 0 了,和其他的值都不一样,请问这里的ReturnStd是什么意思呢?不只Return有Std,Length,DiscountedReturn,GameScore,loss等等都有这个Std值,这里实在让我迷惑,可以帮忙看看吗?
我没有想过这个问题,建议到 rlpyt 的GitHub项目里提问,据我的感受,作者虽然很忙,但还算是比较热情的,一般会在一周之内回答一次别人提的问题。