[Pytorch框架] 4.2.1 使用Visdom在 PyTorch 中进行可视化
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 中进行可视化的更多相关文章
- PyTorch框架+Python 3面向对象编程学习笔记
一.CNN情感分类中的面向对象部分 sparse.py super(Embedding, self).__init__() 表示需要父类初始化,即要运行父类的_init_(),如果没有这个,则要自定义 ...
- 手写数字识别 卷积神经网络 Pytorch框架实现
MNIST 手写数字识别 卷积神经网络 Pytorch框架 谨此纪念刚入门的我在卷积神经网络上面的摸爬滚打 说明 下面代码是使用pytorch来实现的LeNet,可以正常运行测试,自己添加了一些注释, ...
- 小白学习之pytorch框架(1)-torch.nn.Module+squeeze(unsqueeze)
我学习pytorch框架不是从框架开始,从代码中看不懂的pytorch代码开始的 可能由于是小白的原因,个人不喜欢一些一下子粘贴老多行代码的博主或者一些弄了一堆概念,导致我更迷惑还增加了畏惧的情绪(个 ...
- 全面解析Pytorch框架下模型存储,加载以及冻结
最近在做试验中遇到了一些深度网络模型加载以及存储的问题,因此整理了一份比较全面的在 PyTorch 框架下有关模型的问题.首先咱们先定义一个网络来进行后续的分析: 1.本文通用的网络模型 import ...
- pytorch框架对RTX 2080Ti RTX 3090的支持与性能测试
时间点:202011-18 一.背景 2020年9月nvidia发布了30系列的显卡.比起20系列网上的评价是:性能翻倍,价格减半. 最近正好本人手上有RTX 2080Ti 和 RTX 3090,所以 ...
- RobotFramework自动化测试框架-Selenium Web自动化(三)关于在RobotFramework中如何使用Selenium很全的总结(下)
本文紧接着RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)继续分享RobotFramewor ...
- “造轮运动”之 ORM框架系列(二)~ 说说我心目中的ORM框架
ORM概念解析 首先梳理一下ORM的概念,ORM的全拼是Object Relation Mapping (对象关系映射),其中Object就是面向对象语言中的对象,本文使用的是c#语言,所以就是.ne ...
- Combine 框架,从0到1 —— 5.Combine 中的 Subjects
本文首发于 Ficow Shen's Blog,原文地址: Combine 框架,从0到1 -- 5.Combine 中的 Subjects. 内容概览 前言 PassthroughSubject C ...
- ArXiv最受欢迎开源深度学习框架榜单:TensorFlow第一,PyTorch第四
[导读]Kears作者François Chollet刚刚在Twitter贴出最近三个月在arXiv提到的深度学习框架,TensorFlow不出意外排名第一,Keras排名第二.随后是Caffe.Py ...
- [深度学习] pytorch学习笔记(3)(visdom可视化、正则化、动量、学习率衰减、BN)
一.visdom可视化工具 安装:pip install visdom 启动:命令行直接运行visdom 打开WEB:在浏览器使用http://localhost:8097打开visdom界面 二.使 ...
随机推荐
- 前端复习之DOM、BOM
BOM VS DOM: 1 BOM:浏览器对象模型(API),专门操作浏览器窗口的API 2 没标准! 3 DOM:文档对象模型(API),专门操作网页内容的API 4 可以对网页中任意对象,做任意修 ...
- SpringBoot的几大重要问题
1: traceID调用链 2:异步调用注解问题 import org.springframework.scheduling.annotation.Async;import org.springfra ...
- Hadoop警告信息:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform.
when键入命令: hadoop fs -ls / 若出现以下警告信息: Hadoop警告问题:WARN util.NativeCodeLoader: Unable to load native-ha ...
- c# form-data表单提交,post form上传数据、文件
引用自:https://www.cnblogs.com/DoNetCShap/p/10696277.html 表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipa ...
- Nacos与OpenFeign开发
目录 1.前言 2.生产者 3.消费者 4.扩展 1.前言 我的话是微服务B调用微服务A的controller层 2.生产者 微服务A请求接口如下: @GetMapping("/listUn ...
- Python查找存储区0KB文件并记录下地址
查找存储区域中0KB大小文件,可以根据需要变更指定大小. #-*- coding: utf-8 -*- #!/usr/bin/python from os.path import isdir,absp ...
- ChatGPT|一文读懂GPT-4!
前言 大家好,今天早上一早醒来,发现各大科技圈公众号平台开始刷屏OpenAI发布的新模型GPT4.0,看这个版本号就已经知道又是一大波特性的更新. 于是立马起来开始学习! GPT-4 发布视频(202 ...
- Java输入与输出语句详细解析
前言 我们在前面的文章中,学习了如何创建Java文件,也学习了Java里的标识符.运算符.进制等内容.有些同学觉得还不够过瘾,给壹哥发来了好多私信,期待我能够把进度更新的再快一点.这不,新内容这就给大 ...
- 中高等DP总结(更新中
1.CF613D Kingdom and its Cities 题意:给定一棵树,每个询问给出一些关键点,要求删掉最少的点使这些点两两不联通,无解输出-1. 思路:先判无解:只要有一个关键点的父亲也是 ...
- Shell脚本监控Centos 7系统运行状态
#!/usr/bin/bash ## @date: 2021-08-17 ## This is a script for security operation indicator monitoring ...