我们知道深度学习训练过程中,非常重要的一部分是深度学习的可视乎
一般主流的是tensorboard
还有我在一个代码中看到了visdom,感觉非常Nice
想系统学习并了解一下相关内容
Visdom 是一个由 Facebook Research 开发的开源可视化工具,主要用于数据可视化,特别适用于深度学习实验中的实时数据监控。它支持多种数据类型,包括数值、图像、文本和视频等,并且与 PyTorch 紧密集成,同时也支持 Torch 和 Numpy 数据结构。
Panes(窗格):Visdom 的 UI 界面以窗格的形式展示数据。用户可以通过编程或 UI 界面将数据发送到后端,并生成对应的窗格。窗格可以进行拖放、删除等操作。
Environments(环境):环境用于对可视化空间进行分区。每个用户默认有一个名为 main
的环境,不同环境的可视化结果是相互隔离的。
State(状态):服务器会自动缓存可视化的状态,即使重新加载页面或重启服务器,也能恢复之前的状态。
一般我们打开一个可视化界面如下所示
pip install visdom
。python -m visdom.server
启动 Visdom 服务器。启动后,可以通过浏览器访问 http://localhost:8097
查看 Visdom 的 Web 界面。在 PyTorch 或numpy 中使用 Visdom,通常涉及以下步骤:
viz = Visdom()
。选择环境:可以指定环境 env
,如 viz = Visdom(env='my_experiment')
。
使用相应的可视化函数,如 viz.line
或 viz.scatter
,传入数据和配置选项 opts
。
可视乎数据的接口函数有
vis.scatter
:散点图,支持 2D/3D 数据。vis.line
:线图,用于展示连续数据的变化趋势。vis.bar
:条形图,展示分类数据的统计信息。vis.heatmap
:热力图,用于展示矩阵数据。vis.image
:图片,可以展示单张或多张图片。vis.text
:文本,展示文本信息。vis.video
:视频,展示视频文件。vis.matplot
:matplotlib 图,支持 matplotlib 绘图。Visdom 的 opts
参数允许用户自定义图表的多种属性,如标题、轴标签、图例、颜色等。
以下是使用 Visdom 绘制散点图和线图的简单示例:
import numpy as np
from visdom import Visdom
# 初始化 Visdom 连接
viz = Visdom(env="test1")
# 绘制散点图
viz.scatter(X=np.random.rand(255, 2), win="scatter_plot", opts=dict(title="Scatter Plot", markersize=5))
# 绘制折线图
for i in range(10):
viz.line(X=[i], Y=[i*2], win="line_plot",opts=dict(title="Line Plot", markersize=5), update='append')
注意参数中都有win 代表的是这个窗口的ID,更新窗口数据的时候就是通过这个ID,而opts里面的title则是显示给用户的,要区分这两个之间的差异哈
Visdom 支持远程托管,可以将服务器上的可视化结果通过 URL 分享给其他人查看。