作者:佩弦_秦子轩_188 | 来源:互联网 | 2023-06-28 19:38
Visdom:可视化神器
项目地址:visdom
文章目录
- Visdom:可视化神器
- visdom实质
- visdom核心概念
- env:环境
- pane:窗格
- 创建Visdom环境
- 常用API
- plot.scatter
- plot.line
- plot.stem
- plot.heatmap
- plot.bar
- plot.histogram
- plot.boxplot
- plot.surf
- plot.contour
- plot.quiver
- plot.image
- plot.video
- plot.svg
- plot.text
- plot.mesh
visdom实质
visdom服务是一个 Web Server 服务,客户端与服务器端通过tornado进行非阻塞交互,可视化操作不会阻塞当前程序,网络异常也不会导致程序退出。
由于使用 PyTorch 框架的时候,很多时候要用到命令行解析器,导致一些图的显示不能使用matplotlib,所以没办法只能用 Visdom 来显示,比如我的这个博客里的项目:增加可视化+代码注释 of GitHub项目:Graph Convolutional Networks in PyTorch。
visdom核心概念
env:环境
看作一个大容器。
可以使用envs对可视化空间进行分区。默认地,每个用户都会有一个叫做main的envs。可以通过编程或UI创建新的envs。envs的状态是长期保存的。不同环境的可视化结果相互隔离,互不影响。在使用时如果不指定env,默认使用main。
可以通过 url: http://localhost.com:8097/env/main 访问特定的env。如果服务器是被托管的,那么可以将此url分享给其他人,那么其他人也会看到您的可视化结果。
pane:窗格
就是用于绘图的小窗口,在代码中叫 window
UI刚开始是个白板,可以用图像,图片,文本填充它。这些填充的数据出现在 Panes 中,您可以这些 Panes 进行 拖放,删除,调整大小和销毁操作。Panes 是保存在 envs 中的, envs 的状态存储在会话之间,可以下载Panes中的内容–包括您在svg中的绘图。
而且可以使用浏览器的放大缩小功能来调整UI的大小。
创建Visdom环境
import visdom vis = visdom.Visdom(env='test1')
常用API
Visdom
支持下列API。由Plotly提供可视化支持。
plot.scatter
这个函数是用来画2D
或3D
数据的散点图。它需要输入 N2N^2N2或N3N^3N3的 **tensor **或 ndarray X
来指定NNN个点的位置。一个可供选择的长度为NNN的vector
用来保存X
中的点对应的标签(1 到 K)。标签可以通过点的颜色反应出来。
scatter()
支持下列的选项:
options.colormap
: 色图(控制图的颜色) (string
; default = 'Viridis'
)options.markersymbol
: 标记符号 (string
; default = 'dot'
)options.markersize
: 标记大小(number
; default = '10'
)options.markercolor
: 每个标记的颜色. (torch.*Tensor
; default = nil
)ptions.legend
: 包含图例名字的table
plot.line
这个函数用来画线图。它需要一个形状为N
或者N×M
的tensor Y
,用来指定 M
条线的值(每条线上有N
个点)。和一个可供选择的 tensor X
用来指定对应的 x轴的值; X
可以是一个长度为N
的tensor(这种情况下,M条线共享同一个 x轴),也可以是形状和Y
一样的tensor。
The following options
are supported:
options.fillarea
: 填充线下面的区域 (boolean
)options.colormap
: 色图 (string
; default = 'Viridis'
)options.markers
: 显示点标记 (boolean
; default = false
)options.markersymbol
: 标记的形状 (string
; default = 'dot'
)options.markersize
: 标记的大小 (number
; default = '10'
)options.legend
: 保存图例名字的 table
plot.stem
这个函数用来画茎叶图。它需要一个 形状为N
或者N*M
的 tensor X
来指定M
时间序列中N
个点的值。一个可选择的Y
,形状为N
或者N×M
,用Y
来指定时间戳,如果Y
的形状是N
,那么默认M
时间序列共享同一个时间戳。
支持以下特定选项:
options.colormap
: colormap (string
; default = 'Viridis'
)options.legend
: table
containing legend names
plot.heatmap
这个函数用来画热力图。它输入一个 形状为N×M
的 tensor X
。X
指定了热力图中位置的值。
支持下列特定选项:
options.colormap
: 色图 (string
; default = 'Viridis'
)options.xmin
: 小于这个值的会被剪切成这个值(number
; default = X:min()
)options.xmax
: 大于这个值的会被剪切成这个值 (number
; default = X:max()
)options.columnnames
: 包含x轴标签的table
options.rownames
: 包含y轴标签的table
plot.bar
这个函数可以画正常的,堆起来的,或分组的的条形图。
输入参数:
- X(tensor):形状
N
或 N×M
,指定每个条的高度。如果X
有M
列,那么每行的值可以看作一组或者把他们值堆起来(取决与options.stacked
是否为True)。 - Y(tensor, optional):形状
N
,指定对应的x轴的值。
支持以下特定选项:
options.columnnames
: table
containing x-axis labelsoptions.stacked
: stack multiple columns in X``options.legend
: table
containing legend labels
plot.histogram
这个函数用来画指定数据的直方图。他需要输入长度为 N
的 tensor X
。X
保存了构建直方图的值。
支持下面特定选项:
options.numbins
: bins
的个数 (number
; default = 30)
plot.boxplot
这个函数用来画箱型图。
输入:
- X(tensor): 形状
N
或N×M
,指定做第m
个箱型图的N
个值。
支持以下特定选项:
options.legend
: labels for each of the columns in X
plot.surf
这个函数用来画表面图。
输入:
- X(tensor):形状
N×M
,指定表面图上位置的值。
支持以下特定选项:
options.colormap
: colormap (string
; default = 'Viridis'
)options.xmin
: clip minimum value (number
; default = X:min()
)options.xmax
: clip maximum value (number
; default = X:max()
)
plot.contour
这个函数用来画轮廓图。
输入:
- X(tensor):形状
N×M
,指定了轮廓图中的值
支持以下特定选项:
options.colormap
: colormap (string
; default = 'Viridis'
)options.xmin
: clip minimum value (number
; default = X:min()
)options.xmax
: clip maximum value (number
; default = X:max()
)
plot.quiver
这个函数用来画二维矢量场图。
输入:
- X(tensor): 形状
N*M
- Y(tensor):形状
N*M
- gridX(tensor, optional):形状
N*M
- gradY(tensor, optional): 形状
N*M
X
与 Y
决定了 箭头的长度和方向。可选的gridX
和gridY
指定了偏移。
支持下列特定选项:
options.normalize
: 最长肩头的长度 (number
)options.arrowheads
: 是否现实箭头 (boolean
; default = true
)
plot.image
这个函数用来画图片。
输入:
- img(tensor): shape(
C*H*W
)。
支持下面特定选项:
options.jpgquality
: JPG quality (number
0-100; default = 100)
plot.video
这个函数 播放一个视频。
输入: video
的文件名,或者是一个 shape 为L*H*W*C
的 tensor
。这个函数不支持其它特定的功能选项。
注意:使用tensor
作为输入的时候,需要安装ffmpeg
。 能不能播放video
取决你使用的浏览器:浏览器必须要支持Theano codec in an OGG container
。(chrome可以用)。
plot.svg
此函数绘制一个SVG
对象。输入是一个SVG
字符串或 一个SVG
文件的名称。该功能不支持任何特定的options
。
plot.text
此函数可在文本框中打印文本。输入输入一个text
字符串。目前不支持特定的options
plot.mesh
此函数画出一个网格图。
输入:
- X(tensor): shape(
N*2
或N*3
) 定义N
个顶点 - Y(tensor, optional):shape(
M*2
或M×3
) 定义多边形
支持下列特定选项:
options.color
: color (string
)options.opacity
: 多边形的不透明性 (number
between 0 and 1)
Reference:
- 使用 Visdom 在 PyTorch 中进行可视化
- Pytorch求索(2): Pytorch使用visdom进行可视化
- PyTorch 可视化工具 Visdom 介绍