深度强化学习中数据可视化及论文级绘图方法
Tensorboard是机器学习中最常用的可视化工具之一,它不但可以用于模型训练及测试中过程可视化,甚至可以直接用于论文的插图。充分发挥tensorboard的功能,可以事半功倍。reference:https://pytorch.org/docs/stable/tensorboard.htmlhttps://zhuanlan.zhihu.com/p/103630393...
背景
一项新技术的诞生是充满曲折的长周期过程,充分的展示才能暴露问题的证明进步,才能更好的获得各方的支持和帮助,一步步走向成熟。机器学习方法难以解释,需要可视化。技术对普通人也难以解释,需要可视化。
训练过程日志记录与可视化方法
常用的工具主要有Tensorboard和wandb。
Tensorboard数据可视化
Tensorboard是机器学习中最常用的可视化工具之一,它不但可以用于模型训练及测试中过程可视化,甚至可以直接用于论文的插图。充分发挥tensorboard的功能,可以事半功倍。
- 安装与启动
(1)安装 TensorBoard。
TensorBoard 通常随 TensorFlow 自动安装,也可单独通过 pip 安装:
pip install tensorboard
若使用 PyTorch,需通过 torch.utils.tensorboard 模块集成。
(2)启动服务。
在命令行中运行以下命令启动 TensorBoard 服务(默认端口 6006):
tensorboard --logdir=日志文件目录路径
例如,若日志目录为 ./logs,则命令为 tensorboard --logdir=./logs。若端口被占用,可指定新端口(如 6007):
tensorboard --logdir=./logs --port=6007
启动后,命令行会输出本地访问地址(如 http://localhost:6006),在浏览器中打开即可。
- 数据记录与可视化
(1)记录标量数据。
在训练代码中使用 add_scalar 方法记录损失、准确率等指标:
TensorFlow/Keras:通过 tf.summary.scalar 或 Model.fit() 回调自动记录。
PyTorch:使用 SummaryWriter 类:
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter(‘logs’)
for epoch in range(100):
writer.add_scalar(‘loss’, loss_value, epoch)
writer.close()
(2)记录图像数据
使用 add_image 方法记录模型输出或样本图像,需注意数据格式(如 PyTorch 默认要求 CHW 格式):
pythonCopy Code
writer.add_image(‘sample’, image_tensor, global_step)
若图像为 HWC 格式,需添加参数 dataformats=‘HWC’。
- 查看可视化面板
浏览器中打开 TensorBoard 后,主要面板包括:
- Scalars:展示损失、准确率等指标随训练步骤的变化曲线。
- Images:显示记录的图像数据,用于检查样本质量。
- Graphs:可视化模型的计算图结构,帮助理解模型架构。
- Tensorboard数据导出与处理
tensorboard可以很好的对实验过程进行数据可视化,便于实验过程中的数据对比查看。但是只能将多次重复实验结果分别进行可视化,在数据对比中需要将多次重复实验处理,再与系列实验进行对比。额外的数据处理需要将数据进行导出,导出方法主要分为两种[1]:直接下载csv文件和直接解析event提取数据。
对读出的数据可以进行初步处理和可视化 [3]。
reference:
[1] https://www.jianshu.com/p/bdeca5e26cc4
[2] https://www.cxymm.net/article/weixin_40539826/111083471
[3] https://blog.csdn.net/weixin_38757163/article/details/116693900
https://pytorch.org/docs/stable/tensorboard.html
https://zhuanlan.zhihu.com/p/103630393
wandb: 深度学习轻量级可视化工具
人工智能方向的项目,和数据可视化是紧密相连的。模型训练过程中梯度下降过程是什么样的?损失函数的走向如何?训练模型的准确度怎么变化的?清楚这些数据,对我们模型的优化至关重要。
reference:
[1] https://blog.csdn.net/qq_40507857/article/details/112791111
[2] https://wandb.ai/site
论文级数据分析与绘图
这些自动化的工具可以有效的帮助我们发现问题和快速的展示成果,但是很难登堂入室。
pandas数据读取与操作
使用数组或列表创建dataframe,对数据进行操作由宽数据转换为长数据。
Matplotlib画图
Seaborn论文级绘图
Seaborn是一个使用python画统计图表的库,在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图,同时它能高度兼容numpy与pandas数据结构以及scipy与statsmodels等统计模式[1,6]。
图表类型选择
没有一种通用最好的可视化方法,不同的问题需要不同的绘图方式。支持多种风格和颜色设置,可以进行关系曲线、统计估计、变量分布、回归分析等[2]。
强化学习中训练曲线则是各指标关于episode的函数,采用其中的关系曲线 [3, 4]。多组实验结果在一张图中进行对比时,为了减小曲线波动和提高简洁性,采用平滑处理[5]。
训练得到的策略的性能是各指标关于设置条件的分布,采用分类数据图(plots for categorical data)。在一张图中对比不同条件下指标的均值和标准差。
图格式设置
1)背景颜色
seaborn中默认的是窗格底色,而论文中一般采用白色,有两种方法可以更改背景颜色 [7],一种是使用seaborn.set()传递matplotlib模块中的参数来控制seaborn图的绘制,另外一种是通过seaborn.set_style()设置图的主题来稍微调整图形背景。
2)线宽
seaborn中曲线的宽度是偏细的,特别是单条曲线,官方文件中并未给出相应的参数设置,但是使用linewidth也是可以修改的 [8]。
3)字体及大小设置
字体大小可以通过seaborn.set() 函数中的 font_scale 参数整体放大,也可以使用 fontsize 参数指定字体大小 [9]。
4)设置坐标轴格式
设置坐标轴范围,刻度,位置,自定义刻度名称,添加数据标签 [10]。
5)设置图例
图例位置调整和排列方式设置 [11,12]。
图片保存[13]
1)图片格式
Matplotlib提供多种保存图片的格式,包括PNG、JPEG、EPS、SVG、PDF等。EPS和PDF文件格式更适合在印刷品中使用,在保持分辨率不变的情况下,可以无限缩放。
2)分辨率
默认情况下,Matplotlib使用100 dpi(dots per inch)的分辨率,这对于大多数应用程序来说已经足够了。但是,在一些应用场景下,比如印刷品,需要更高的分辨率。
3)尺寸
除了分辨率和文件格式之外,你还可以指定保存图片的尺寸。
reference:
[1] https://zhuanlan.zhihu.com/p/24464836
[2] https://zhuanlan.zhihu.com/p/342945532
[3] https://zhuanlan.zhihu.com/p/147847062
[4] https://zhuanlan.zhihu.com/p/75477750
[5] https://blog.csdn.net/qq_43280087/article/details/119894398
[6] https://seaborn.pydata.org/tutorial/introduction.html
[7] https://www.delftstack.com/zh/howto/seaborn/background-color-seaborn/
[8] https://www.coder.work/article/7665070
[9] https://zhuanlan.zhihu.com/p/437747308
[10] https://blog.csdn.net/HHG20171226/article/details/101294381
[11] https://blog.csdn.net/Wannna/article/details/102751689
[12] https://blog.csdn.net/weixin_38314865/article/details/115182900
[13] https://zhuanlan.zhihu.com/p/592141461
[14] https://geek-docs.com/seaborn/seaborn-top-tutorials/1001100_seaborn_introduction.html
进阶技巧
多图绘制方法
直接绘制子图网格。
在latex或者word中拼图。
reference:
[1] https://geek-docs.com/seaborn/seaborn-top-tutorials/1016100_seaborn_pair_grid.html
中文显示
reference:
https://blog.csdn.net/u010472607/article/details/82789887
总结
更多推荐
所有评论(0)