前言
Visdom是Facebook专门为PyTorch开发的一款可视化工具,支持传入的数据类型有NumPy和Tensor。
我们可以用它来做网络训练或者其他数据展示的前端可视化页面。
官方给出的效果图如下:
安装
需要 Python 3 环境,使用部分功能(如vis.matplot)需要提前一些其他安装依赖。
(1)通过pip安装,稳定版,可能不支持最新的一些功能和特性。
pip install visdom
(2)通过源码安装
从github上下载源码后安装。
pip install -e .
如果上述命令出错,可以尝试下面命令:
easy_install .
使用
开启visdom服务
(1)通过命令行启动 (in a screen or tmux)
> visdom
(2)通过python开启
python -m visdom.server
正常启动后屏幕上会显示:
此时可以在浏览器中打开网页http://localhost:8097看到Visdom页面了,刚打开时整个窗口是蓝色背景的,没有内容。
如果遇到问题可以参考GitHub主页。
其中若启动时一直停在Checking for scripts.
这一行,这是由于visdom需要下载和加载一些js脚本,由于visdom是Facebook出品,所以可能出现网络无法连接到服务器导致下载失败的情况。具体解决办法可以参考其Github或使用搜索引擎搜索相关解决方案。
python使用visdom
import visdom
import random
import numpy as np
import time
if __name__ == "__main__":
vis = visdom.Visdom(env='test') #创建名为test的visdom环境
start_time = time.time()
traintime = 0
while True:
cnt = random.randint(5,20)
vis.line(Y=np.array([cnt]), X=np.array([traintime]),
win=('test'),
opts=dict(title='test'),
update=None if traintime == 0 else 'append'
)#画出折线图
traintime = time.time() - start_time
画图效果如下:
还可以直接传入Matplotlib plot实例用于显示:
需要提前安装beautifulsoup4 和 lxml 包。
pip install beautifulsoup4
pip install lxml
fig, ax = plt.subplots(3, 2, figsize=(8,10),constrained_layout=True)
***#添加子图
vis.matplot(plt, win=('test'), opts=dict(title='test'))#向visdom实例vis中传入plt实例
效果如下:
Note:
matplot is not rendered using the same backend as plotly plots,
and is somewhat less efficient. Using too many matplot windows may
degrade visdom performance.
参考资料
[1] visdom Github主页 facebookresearch/visdom
[2] PyTorch的远程可视化神器visdom