0
点赞
收藏
分享

微信扫一扫

PyTorch可视化工具visdom_1.入门使用

王栩的文字 2022-02-24 阅读 55



文章目录


  • ​​1. visdom概述​​

  • ​​1.1 Visdom中有两个重要概念:​​
  • ​​1.2 Visdom的使用有两点需要注意的地方:​​

  • ​​2. 使用步骤:​​
  • ​​3. 参数详解​​
  • ​​4.参考​​


1. visdom概述

​Visdom​​​可以创造、组织和共享多种数据的可视化,包括数值、图像、文本,甚至是视频,其支持​​Torch​​​及​​Numpy​​。用户可通过编程组织可视化空间,或通过用户接口为生动数据打造仪表板,检查实验结果或调试代码。

1.1 Visdom中有两个重要概念:


  • ​env​​:​环境​。不同环境的可视化结果相互隔离,互不影响,在使用时如果不指定​​env​​​,默认使用​​main​​​。不同用户、不同程序一般使用不同的​​env​​。
  • ​pane​​:​窗格​。窗格可用于可视化图像、数值或打印文本等,其可以拖动、缩放、保存和关闭。一个程序中可使用同一个​​env​​​中的不同​​pane​​​,每个​​pane​​可视化或记录某一信息。

1.2 Visdom的使用有两点需要注意的地方:


  • 需手动指定保存​​env​​​,可在​​web​​​界面点击​​save​​​按钮或在程序中调用​​save​​​方法,否则​​visdom​​​服务重启后,​​env​​等信息会丢失。
  • 客户端与服务器之间的交互采用​​tornado​​异步框架,可视化操作不会阻塞当前程序,网络异常也不会导致程序退出.

2. 使用步骤:

​Visdom​​​的安装可通过命令​​pip install visdom​​​。安装完成后,需通过​​python -m visdom.server​​​命令启动​​visdom​​​服务,或通过​​nohup python -m visdom.server &​​​命令将服务放至后台运行。​​Visdom​​​服务是一个​​web server​​​服务,默认绑定​​8097​​​端口,客户端与服务器间通过​​tornado​​进行非阻塞交互。

1.安装​​visdom​​​:​​pip install visdom​

2.在​​shell​​​下,输入:​​python -m visdom.server​​​,则开启​​web​​服务。

出现:

PyTorch可视化工具visdom_1.入门使用_客户端

在浏览器输入:http://localhost:8097 ,即跳出界面。

3.在​​pycharm​​运行以下程序:

import torch
import visdom

# 新建一个连接客户端
# 默认端口为8097,host是‘localhost'
vis = visdom.Visdom(env='test')
x = torch.arange(1,20,0.1)
y = torch.cos(x)
vis.line(X=x, Y=y, win='cosx', opts={'title':'y=cos(x)'})

4.在网页中选​​env​​ 为​​test​

PyTorch可视化工具visdom_1.入门使用_python_02

点击​​clear​​按钮可以清空当前​​env​​的所有​​pane​​,点击​​save​​按钮可将当前​​env​​保存成​​json​​文件,保存路径位于​​~/.visdom/​​目录下。也可修改​​env​​的名字后点击​​fork​​,保存当前​​env​​的状态至更名后的​​env​​。

使​​visdom​​​断开的方法:点击​​online​​​变成​​offline​

PyTorch可视化工具visdom_1.入门使用_数据_03

这样此时​​visdom​​的状态是断开的,不会响应命令 。

3. 参数详解

​Visdom以Plotly​​为基础,支持丰富的可视化操作。


  • ​vis = visdom.Visdom(env=u'test1')​​​,用于构建一个客户端,客户端除指定​​env​​​之外,还可以指定​​host​​​、​​port​​等参数。
  • ​vis​​作为一个客户端对象,可以使用常见的画图函数,包括:

  • ​line​​​:类似​​Matlab​​​中的​​plot​​操作,用于记录某些标量的变化,如损失、准确率等;
  • ​image​​​:可视化图片,可以是输入的图片,也可以是​​GAN​​生成的图片,还可以是卷积核的信息;
  • ​text​​​:用于记录日志等文字信息,支持​​html​​格式
  • ​histgram​​:可视化分布,主要是查看数据、参数的分布
  • ​scatter​​:绘制散点图
  • ​bar​​:绘制柱状图
  • ​pie​​:绘制饼状图
  • 更多操作可参考​​visdom​​​的​​github​​主页


这里主要介绍深度学习中常见的​​line​​、​​image​​和​​text​​操作。

​Visdom​​​同时支持​​PyTorch​​​的​​tensor​​​和​​Numpy​​​的​​ndarray​​​两种数据结构,但不支持​​Python​​​的​​int​​​、​​float​​​等类型,因此每次传入时都需先将数据转成​​ndarray​​​或​​tensor​​。上述操作的参数一般不同,但有两个参数是绝大多数操作都具备的:


  • ​win​​​:用于指定​​pane​​​的名字,如果不指定,​​visdom​​​将自动分配一个新的​​pane​​​。如果两次操作指定的​​win​​​名字一样,新的操作将覆盖当前​​pane​​​的内容,因此建议每次操作都重新指定​​win​​。
  • ​opts​​​:选项,接收一个字典,常见的​​option​​​包括​​title​​​、​​xlabel​​​、​​ylabel​​​、​​width​​​等,主要用于设置​​pane​​的显示格式。

之前提到过,每次操作都会覆盖之前的数值,但往往我们在训练网络的过程中需不断更新数值,如损失值等,这时就需要指定参数​​update='append'​​​来避免覆盖之前的数值。而除了使用​​update​​​参数以外,还可以使用​​vis.updateTrace​​​方法来更新图,但​​updateTrace​​​不仅能在指定​​pane​​​上新增一个和已有数据相互独立的​​Trace​​​,还能像​​update='append'​​​那样在同一条​​trace​​上追加数据。

import torch
import visdom


vis = visdom.Visdom(env='test1')
x = torch.arange(1,30,0.01)
y = torch.sin(x)
vis.line(X=x,Y=y,win='sinx',opts={'title':'y=sin(x)'})


# 可视化一个随机的黑白图片
vis.image(torch.randn(64, 64).numpy(), win='random1')

# 随机可视化一张彩色图片
vis.image(torch.randn(3, 64, 64).numpy(), win='random2')

# 可视化36张随机的彩色图片,每一行6张
vis.images(torch.randn(36, 3, 64, 64).numpy(), nrow=6, win='random3', opts={'title':'random_imgs'})

vis.text(u'''<h1>Hello Visdom</h1><br>Visdom是Facebook专门为<b>PyTorch</b>开发的一个可视化工具,
在内部使用了很久,在2017年3月份开源了它。
Visdom十分轻量级,但是却有十分强大的功能,支持几乎所有的科学运算可视化任务''',
win='visdom',
opts={'title': u'visdom简介'}
)

PyTorch可视化工具visdom_1.入门使用_python_04



举报

相关推荐

0 条评论