visdom简介
visdom是Facebook专门为pytorch开发的一款可视化工具。
在anaconda prompt中输入pip install visdom进行安装。安装完成后,需通过python -m visdom.server命令启动visdom服务。visdom服务是一个Web Server服务,默认绑定8097端口,可打开浏览器输入https://localhost8097进入visdom界面(最好是谷歌浏览器)。
visdom中有以下两个重要概念:
- env:环境。不同环境的可视化结果相互隔离,互不影响,在使用时如果不指定env,默认使用main。
- pane:窗格。窗格相当于一个新的窗口,可用于可视化图像、数值或打印文本等,其可以拖动、缩放、保存和关闭。
visdom可对多种数据进行可视化,包括数值、图像、文本,甚至是视频, 支持pytorch的tensor和numpy的ndarray两种数据结构,但不支持python的int、float等类型。
visdom可视化
import torch as t
import visdom
#新建一个客户端
#指定env='test1',默认端口是8097,host是‘localhost’
vis = visdom.Visdom(env='test1')
x = t.arange(1,30,0.1)
y = t.sin(x)
vis.line(X=x,Y=y,win='sinx',opts={'title':'y=sin(x)'})
>>'sinx'
vis作为一个客户端对象,可以使用如下常见的画图函数。
- line:类似于matlab中的plot操作,用于记录某些变量的变化,例如损失、准确率等
- image:可视化图片,可以是输入的图片,也可以是GAN生成的图片,还可以是卷积核的信息
- text:用于记录日志等文字信息,支持HTML语法标准
- histgram:可视化分布,主要是查看数据、参数的分布
- scatter:绘制散点图
- bar:绘制柱状图
- pie:绘制饼状图
visdom函数中常用到的参数:
- win:用于指定窗格pane的名字,如果不指定,系统会自动分配一个新的pane。如果两次操作的win名字一样,新的窗格将覆盖之前的窗格,因此建议每次操作都指定win。
- opts:可视化配置,接收一个字典,常见的option包括title、xlabel、ylabel、width等,主要用于设置pane的显示格式
update属性
之前提到过如果窗格pane的名字win每次命名一样的话,每次操作都会覆盖之前的窗格,可以通过指定属性update=‘append’,在同一个窗格上继续显示。
vis = visdom.Visdom(env='test2')
for i in range(10):
x = t.Tensor([i])
y = x
vis.line(X=x,Y=y,win='polynomial',update='append' if i>0 else None)
x = t.arange(0,9,0.1)
y = (x**2)/9
vis.line(X=x,Y=y,win='polynomial',update='append')
>>'polynomial'
可视化文本
vis.text用于可视化文本,它支持所有的html标签,同时也遵循着html的语法标准。例如大标题<h1>,<br>换行,<b>加粗。
vis = visdom.Visdom(env='test4')
vis.text('''<h1>Hello visdom</h1><br>
visdom是Facebook专门为<b>pytorch</b>开发的一个可视化工具,
在内部用了很久,于2017年3月开源。''',win='txt')
>>可视化结果如下图所示