rl-plotter 项目介绍
rl-plotter 是一个简单易用的工具,专为强化学习(Reinforcement Learning, RL)领域设计,以便快速绘制学习曲线图。其功能设计旨在帮助研究人员和开发者更直观地展示其强化学习模型的训练效果。接下来,我们将详细介绍该项目的安装步骤、使用方法以及一些具体功能。
安装方式
从 PIP 安装
如果您希望通过 PIP 来安装,您只需在命令行中输入以下指令:
pip install rl_plotter
从源码安装
如果您倾向于从源码安装,可以使用以下指令:
python setup.py install
使用方法
1. 添加基础日志记录器
建议在您进行模型评估的代码中添加日志记录器:
from rl_plotter.logger import Logger
logger = Logger(exp_name="your_exp_name", env_name=环境名, seed=随机种子, locals())
····
logger.update(score=评估分数列表, total_steps=当前训练步数)
您也可以选择使用 OpenAI 提供的 spinningup 库来记录日志,也支持使用 OpenAI-baseline 的 bench.Monitor,尽管不太推荐该方法。
env = logger.monitor_env(env)
2. 跟踪其他变量(可选项)
如果您需要跟踪除得分之外的其他变量,可以使用自定义日志记录器:
custom_logger=logger.new_custom_logger(filename, fieldnames=["变量1", "变量2", ..., "变量n"])
custom_logger.update(fieldvalues=变量值列表, total_steps=当前训练步数)
3. 绘制结果图表
在模型训练结束或者训练过程中,您可以按以下步骤绘制学习曲线:
- 切换到日志目录或多日志的父目录(默认:./)。
- 运行以下命令进行绘图:
rl_plotter --save --show
如果您希望获得类似 OpenAI-spinningup 风格的图表,还可以使用 seaborn 内核进行绘图:
rl_plotter_spinup --save --show
示例
1. 常用命令
rl_plotter --save --show --filter HalfCheetah
rl_plotter --save --show --filter Ant --avg_group --shaded_std
rl_plotter --save --show --filter Swimmer --avg_group --shaded_std --shaded_err
rl_plotter --save --show --filter Walker2d --filename progress.txt --xkey TotalEnvInteracts --ykey AverageEpRet
2. 实际例子
以下是一些实际应用的命令示例:
rl_plotter --show --save --avg_group --shaded_err --shaded_std
以及:
rl_plotter --show --save --avg_group --shaded_err --shaded_std --filename q --filters Walker HalfCheetah --ykey 偏差 真值 --风格 默认 --平滑 0
更多具体使用方法
如果您想更深入地了解可自定义的曲线样式,您可以使用以下命令查看所有参数设置:
rl_plotter --help
功能特点
- 自定义日志记录器、样式、键值、标签、x轴格式化等。
- 根据目录名称进行筛选。
- 多实验绘图功能。
- 支持多种绘图库内核(原生 matplotlib 和 seaborn)。
- 兼容 OpenAI-baseline 的监控记录器和 OpenAI-spinningup。
- 对特定实验提供颜色对应。
- 支持多 y 键值和双 y 图例。
项目引用
如果您在研究或出版中使用到该项目,请进行如下引用:
@misc{rl-plotter,
author = {Xiaoyu Gong},
title = {RL-plotter: A plotter for reinforcement learning},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {https://github.com/gxywy/rl-plotter},
}
鸣谢
rl-plotter 的核心灵感来源于 OpenAI 的 baselines 和 spinningup 项目。