import torch
import math
import numpy as np
from visdom import Visdom
import time
torch.__version__
'1.0.0'

4.2.1 使用Visdom在 PyTorch 中进行可视化

Visdom是Facebook在2017年发布的一款针对PyTorch的可视化工具。官网,visdom由于其功能简单,一般会被定义为服务器端的matplot,也就是说我们可以直接使用python的控制台模式进行开发并在服务器上执行,将一些可视化的数据传送到Visdom服务上,通过Visdom服务进行可视化

安装

Visdom的安装很简单,直接使用命令pip install visdom安装即可。
在安装完成后,使用命令python -m visdom.server 在本地启动服务器,启动后会提示It's Alive! You can navigate to http://localhost:8097 这就说明服务已经可用,我们打开浏览器,输入http://localhost:8097 即可看到页面。

端口8097是默认的端口可以在启动命令后加 -port参数指定端口,常用的参数还有 --hostname-base_url

Visdom的服务在启动时会自动下载一些静态文件,这里坑就来了,因为某些无法描述的原因,导致下载会失败,比如类似这样的提示 ERROR:root:Error 404 while downloading https://unpkg.com/layout-bin-packer@1.4.0 就说明静态文件没有下载完全,这样有可能就会打不开或者页面中没有菜单栏,那么需要手动进行下载,这里我打包了一份正常的静态文件,直接复制到Lib\site-packages\visdom中即可。

如果不知道conda的环境目录在哪里,可以使用conda env list 查看

感谢CSDN的伙伴提供的缺失文件,原文这里

基本概念

Environments

Environments的作用是对可视化区域进行分区,每个用户都会有一个叫做main的默认分区,如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aEux1Azn-1618486885486)(1.PNG)]
在程序指定的情况下,默认的图表都会放到这里面

Panes

Panes是作为每一个可视化图表的容器,可以使用生成的图表,图片,文本进行填充,我们可以对Panes进行拖放,删除,调整大小和销毁等操作:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FgjwY01j-1618486885494)(2.PNG)]
Panes和Environments是一对多的关系,即一个Environments可以包含多个Panes

VIEW

在对Panes进行调整后,可以通过VIEW对状态进行管理:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iMVWT4rT-1618486885496)(3.PNG)]

可视化接口

Visdom是由Plotly 提供的可视化支持,所以提供一下可视化的接口:

  • vis.scatter : 2D 或 3D 散点图
  • vis.line : 线图
  • vis.stem : 茎叶图
  • vis.heatmap : 热力图
  • vis.bar : 条形图
  • vis.histogram: 直方图
  • vis.boxplot : 箱型图
  • vis.surf : 表面图
  • vis.contour : 轮廓图
  • vis.quiver : 绘出二维矢量场
  • vis.image : 图片
  • vis.text : 文本
  • vis.mesh : 网格图
  • vis.save : 序列化状态

使用

绘制简单的图形

这里我们使用官方的DEMO来做样例

env = Visdom()
assert env.check_connection() #测试一下链接,链接错误的话会报错

这里生成sin和cos两条曲线数据

Y = np.linspace(0, 2 * math.pi, 70)
X = np.column_stack((np.sin(Y), np.cos(Y)))

使用茎叶图展示

env.stem(
X=X,
Y=Y,
opts=dict(legend=['Sine', 'Cosine'])
)
'window_36f18bc34b4992'

可以通过env参数指定Environments,如果名称包含了下划线_那么visdom会跟根据下划线分割并自动分组

envtest = Visdom(env='test_mesh')
assert envtest.check_connection()

生成一个网格图

x = [0, 0, 1, 1, 0, 0, 1, 1]
y = [0, 1, 1, 0, 0, 1, 1, 0]
z = [0, 0, 0, 0, 1, 1, 1, 1]
X = np.c_[x, y, z]
i = [7, 0, 0, 0, 4, 4, 6, 6, 4, 0, 3, 2]
j = [3, 4, 1, 2, 5, 6, 5, 2, 0, 1, 6, 3]
k = [0, 7, 2, 3, 6, 7, 1, 1, 5, 5, 7, 6]
Y = np.c_[i, j, k]
envtest.mesh(X=X, Y=Y, opts=dict(opacity=0.5))
'window_36f18bc533e990'

更新损失函数

在训练的时候我们每一批次都会打印一下训练的损失和测试的准确率,这样展示的图表是需要动态增加数据的,下面我们来模拟一下这种情况

x,y=0,0
env2 = Visdom()
pane1= env2.line(
X=np.array([x]),
Y=np.array([y]),
opts=dict(title='dynamic data'))
for i in range(10):
time.sleep(1) #每隔一秒钟打印一次数据
x+=i
y=(y+i)*1.5
print(x,y)
env2.line(
X=np.array([x]),
Y=np.array([y]),
win=pane1,#win参数确认使用哪一个pane
update='append') #我们做的动作是追加,除了追加意外还有其他方式,这里我们不做介绍了
0 0.0
1 1.5
3 5.25
6 12.375
10 24.5625
15 44.34375
21 75.515625
28 123.7734375
36 197.66015625
45 309.990234375

在运行完上述程序时,切换到visdom,看看效果吧

visdom的基本用法介绍完毕,下一节介绍更加强大的 tensorboardx

[Pytorch框架] 4.2.1 使用Visdom在 PyTorch 中进行可视化的更多相关文章

  1. PyTorch框架+Python 3面向对象编程学习笔记

    一.CNN情感分类中的面向对象部分 sparse.py super(Embedding, self).__init__() 表示需要父类初始化,即要运行父类的_init_(),如果没有这个,则要自定义 ...

  2. 手写数字识别 卷积神经网络 Pytorch框架实现

    MNIST 手写数字识别 卷积神经网络 Pytorch框架 谨此纪念刚入门的我在卷积神经网络上面的摸爬滚打 说明 下面代码是使用pytorch来实现的LeNet,可以正常运行测试,自己添加了一些注释, ...

  3. 小白学习之pytorch框架(1)-torch.nn.Module+squeeze(unsqueeze)

    我学习pytorch框架不是从框架开始,从代码中看不懂的pytorch代码开始的 可能由于是小白的原因,个人不喜欢一些一下子粘贴老多行代码的博主或者一些弄了一堆概念,导致我更迷惑还增加了畏惧的情绪(个 ...

  4. 全面解析Pytorch框架下模型存储,加载以及冻结

    最近在做试验中遇到了一些深度网络模型加载以及存储的问题,因此整理了一份比较全面的在 PyTorch 框架下有关模型的问题.首先咱们先定义一个网络来进行后续的分析: 1.本文通用的网络模型 import ...

  5. pytorch框架对RTX 2080Ti RTX 3090的支持与性能测试

    时间点:202011-18 一.背景 2020年9月nvidia发布了30系列的显卡.比起20系列网上的评价是:性能翻倍,价格减半. 最近正好本人手上有RTX 2080Ti 和 RTX 3090,所以 ...

  6. RobotFramework自动化测试框架-Selenium Web自动化(三)关于在RobotFramework中如何使用Selenium很全的总结(下)

    本文紧接着RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)继续分享RobotFramewor ...

  7. “造轮运动”之 ORM框架系列(二)~ 说说我心目中的ORM框架

    ORM概念解析 首先梳理一下ORM的概念,ORM的全拼是Object Relation Mapping (对象关系映射),其中Object就是面向对象语言中的对象,本文使用的是c#语言,所以就是.ne ...

  8. Combine 框架,从0到1 —— 5.Combine 中的 Subjects

    本文首发于 Ficow Shen's Blog,原文地址: Combine 框架,从0到1 -- 5.Combine 中的 Subjects. 内容概览 前言 PassthroughSubject C ...

  9. ArXiv最受欢迎开源深度学习框架榜单:TensorFlow第一,PyTorch第四

    [导读]Kears作者François Chollet刚刚在Twitter贴出最近三个月在arXiv提到的深度学习框架,TensorFlow不出意外排名第一,Keras排名第二.随后是Caffe.Py ...

  10. [深度学习] pytorch学习笔记(3)(visdom可视化、正则化、动量、学习率衰减、BN)

    一.visdom可视化工具 安装:pip install visdom 启动:命令行直接运行visdom 打开WEB:在浏览器使用http://localhost:8097打开visdom界面 二.使 ...

随机推荐

  1. CMake指定的任务可执行文件"cmd.exe" 未能运行。System.IO.IOException:未能创建临时文件。临时文件夹已满或其路径不正确。对路径"......exec.cmd "的访问被拒绝

    我觉得是我使用VS2022的原因,网上也没有找到相同的问题.

  2. unity踩坑集锦

    1.AB包加载,如果项目没有这个tag,那么就匹配不上,和代码一样.2.unity打包安卓topbar想显示出来怎么做?:不渲染安全区域外  3. unity编辑器报错 : Expanding inv ...

  3. excel编辑受限的密码保护破解

    录制一个宏并且执行: Public Sub 工作表保护密码() Const DBLSPACE As String = vbNewLine & vbNewLine Const AUTHORS A ...

  4. springboot的websocket因IP问题无法连接

    首先遇到这个问题有点奇葩,出现在项目上线时的客户现场,头两天一直都无法确定原因,因为它的表现方式很奇怪,基于springboot实现的websocket,同样的代码在公司研发环境不会有问题,客户现场会 ...

  5. FileZilla连不上阿里云ECS服务器

    (1)阿里云的公网IP (2)端口是22,网上很多介绍是21(当时也没去注意,后来发现一直连接不上去,后来才发现) 在FileZilla 中: - 用sftp协议连接Server ,需要用port 2 ...

  6. FinOps首次超越安全成为企业头等大事丨云计算趋势报告

    随着云计算在过去十年中的广泛应用,云计算用户所面临的一个持续不变的趋势是:安全一直是用户面临的首要挑战.然而,这种情况正在发生转变. 知名IT软件企业 Flexera 对云计算决策者进行年度调研已经持 ...

  7. .NET中委托性能的演变

    .NET中的委托 .NET中的委托是一项重要功能,可以实现间接方法调用和函数式编程. 自.NET Framework 1.0起,委托在.NET中就支持多播(multicast)功能.通过多播,我们可以 ...

  8. Java面试——Netty

    一.BIO.NIO 和 AIO [1]阻塞 IO(Blocking I/O):同步阻塞I/O模式,当一条线程执行 read() 或者 write() 方法时,这条线程会一直阻塞直到读取一些数据或者写出 ...

  9. 暗夜发光,独自闪耀,盘点网页暗黑模式(DarkMode)下的特效和动效,CSS3实现

    众所周知,网页的暗黑模式可以减少屏幕反射和蓝光辐射,减少眼睛的疲劳感,特别是在夜间使用时更为明显.其实暗黑模式也给霓虹灯效应(Neon Effect)提供了发挥的环境. 霓虹灯效应是一种视觉效果,其特 ...

  10. 如何单机部署多个 MySQL 8.0 实例 ?

    在服务器资源有限的情况下,可利用该方案快速搭建各类 mysql 架构方案.各 MySQL 实例共享一个 mysqld 主程序,但各实例数据目录是独立的,存放在不同的文件夹中:好了.废话不多说,直接上干 ...