visdom 快速启动

启动地址:http://localhost:8097/

visdom 的介绍

Visdom是Facebook专为PyTorch开发的实时可视化工具包,其作用相当于TensorFlow中的Tensorboard,灵活高效且界面美观,下面就一起来学习下如何使用吧!如果想更多了解关于Visdom的使用可以参考官方

首先来欣赏下官方提供的Visdom的可视化界面

Visdom的安装

  • 安装非常简易,只需要打开cmd窗口,输入一下命令即可快速安装完成
pip install visdom

Visdom 的使用

类似于TensorFlow的TensorBoard,要使用Visdom,就要先在终端开启监听命令,根据显示的网址然后在浏览器里输入:http://localhost:8097 进行登录,此时如果报错,别怕,参考以下网站一定能轻松解决(新版visdom已经解决了可以使用pip install --upgrade visdom进行更新即可):

开启监听命令

python -m visdom.server # 或者直接visdom

示例1:实时曲线绘制方法

  • 方法是起点+数据点更新
from visdom import Visdom'''
单条追踪曲线设置
'''
viz = Visdom()  # 初始化visdom类
viz.line([0.],    ## Y的第一个点坐标[0.],    ## X的第一个点坐标win="train loss",    ##窗口名称opts=dict(title='train_loss')  ## 图像标例)  #设置起始点
'''
模型数据
'''
viz.line([1.],   ## Y的下一个点坐标[1.],   ## X的下一个点坐标win="train loss", ## 窗口名称 与上个窗口同名表示显示在同一个表格里update='append'   ## 添加到上一个点后面)  # Setting up a new session...# 'train loss'
  • 界面自动更新如下

示例2:多条曲线绘制

  • 多条曲线绘制
from visdom import Visdom'''
多条曲线绘制 实际上就是传入y值时为一个向量
'''
viz = Visdom(env='my_wind') # 注意此时我已经换了新环境
#设置起始点
viz.line([[0.0,0.0]],    ## Y的起始点[0.],    ## X的起始点win="test loss",    ##窗口名称opts=dict(title='test_loss')  ## 图像标例)
'''
模型数据
'''
viz.line([[1.1,1.5]],   ## Y的下一个点[1.],   ## X的下一个点win="test loss", ## 窗口名称update='append'   ## 添加到上一个点后面)  # 'test loss'
  • 大家此时查看需要先切换environment窗口为my才能看到图像,如图所示:

示例3:图像显示

  • 值得注意的是,Visdom支持图像的批量显示
from visdom import Visdom
import numpy as npimage = np.random.randn(6, 3, 200, 300) # 此时batch为6
viz = Visdom(env='my_image') # 注意此时我已经换了新环境
viz.images(image, win='x')# 'x'
  • 界面自动更新如下

示例4:可视化数据集

  • 值得注意的是,Visdom支持图像的批量显示
from visdom import Visdom
import numpy as np
import torch
from torchvision import datasets, transforms# 注意数据集路径
train_loader = torch.utils.data.DataLoader(datasets.MNIST(r'D:\data',train=True,download=False,transform=transforms.Compose([transforms.ToTensor()])),batch_size=128,shuffle=True)
sample=next(iter(train_loader)) # 通过迭代器获取样本
# sample[0]为样本数据 sample[1]为类别  nrow=16表示每行显示16张图像
viz = Visdom(env='my_visual') # 注意此时我已经换了新环境
viz.images(sample[0],nrow=16,win='mnist',opts=dict(title='mnist'))# 'mnist'
  • 界面自动更新如下

示例5:训练

  • 下面通过具体的训练过程通过visdom可视化
  • 为了方便显示Visdom的功能,直接使用自带的MNist数据进行可视化。
'''
导入库文件
'''
import  torch
import  torch.nn as nn
import  torch.nn.functional as F
import  torch.optim as optim
from    torchvision import datasets, transforms
from visdom import Visdom
import numpy as np'''
构建简单的模型:简单线性层+Relu函数的多层感知机
'''
class MLP(nn.Module):def __init__(self):super(MLP, self).__init__()self.model = nn.Sequential(nn.Linear(784, 200),nn.ReLU(inplace=True),nn.Linear(200, 200),nn.ReLU(inplace=True),nn.Linear(200, 10),nn.ReLU(inplace=True),)def forward(self, x):x = self.model(x)return xbatch_size = 128
learning_rate = 0.01
epochs = 10# 注意数据集路径
train_loader = torch.utils.data.DataLoader(datasets.MNIST(r'D:\Users\Administrator\Desktop\PythonDLbasedonPytorch\data', train=True,download=True,transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307, ), (0.3081, ))])),batch_size=batch_size,shuffle=True)
# 注意数据集路径
test_loader = torch.utils.data.DataLoader(datasets.MNIST(r'D:\Users\Administrator\Desktop\PythonDLbasedonPytorch\data',train=False,transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307, ), (0.3081, ))])),batch_size=batch_size,shuffle=True)# 注意此处初始化visdom类
viz = Visdom()
# 绘制起点
viz.line([0.], [0.], win="train loss", opts=dict(title='train_loss'))
device = torch.device('cuda:0')
net = MLP().to(device)
optimizer = optim.SGD(net.parameters(), lr=learning_rate)
criteon = nn.CrossEntropyLoss().to(device)for epoch in range(epochs):for batch_idx, (data, target) in enumerate(train_loader):data = data.view(-1, 28 * 28)data, target = data.to(device), target.cuda()logits = net(data)loss = criteon(logits, target)optimizer.zero_grad()loss.backward()# print(w1.grad.norm(), w2.grad.norm())optimizer.step()if batch_idx % 100 == 0:print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, batch_idx * len(data), len(train_loader.dataset),100. * batch_idx / len(train_loader), loss.item()))test_loss = 0correct = 0for data, target in test_loader:data = data.view(-1, 28 * 28)data, target = data.to(device), target.cuda()logits = net(data)test_loss += criteon(logits, target).item()pred = logits.argmax(dim=1)correct += pred.eq(target).float().sum().item()test_loss /= len(test_loader.dataset)# 绘制epoch以及对应的测试集损失lossviz.line([test_loss], [epoch], win="train loss", update='append')print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(test_loss, correct, len(test_loader.dataset),100. * correct / len(test_loader.dataset)))

loss曲线如图所示



visdom 基本可视化函数

  • 具体使用方法仍然可以参考上述网站,限于篇幅,这里主要列举最常用的line函数以及image函数的使用方法

visdom基本可视化函数

- vis.image : 图片
- vis.line: 曲线
- vis.images : 图片列表
- vis.text : 抽象HTML 输出文字
- vis.properties : 属性网格
- vis.audio : 音频
- vis.video : 视频
- vis.svg : SVG对象
- vis.matplot : matplotlib图
- vis.save : 序列化状态服务端

上述函数参数

  • 注意opt的参数都可以用python字典的格式传入,大家可以参考下方使用方法
- opts.title : 图标题
- opts.width : 图宽
- opts.height : 图高
- opts.showlegend : 显示图例 (true or false)
- opts.xtype : x轴的类型 ('linear' or 'log')
- opts.xlabel : x轴的标签
- opts.xtick : 显示x轴上的刻度 (boolean)
- opts.xtickmin : 指定x轴上的第一个刻度 (number)
- opts.xtickmax : 指定x轴上的最后一个刻度 (number)
- opts.xtickvals : x轴上刻度的位置(table of numbers)
- opts.xticklabels : 在x轴上标记标签 (table of strings)
- opts.xtickstep : x轴上刻度之间的距离 (number)
- opts.xtickfont :x轴标签的字体 (dict of font information)
- opts.ytype : type of y-axis ('linear' or 'log')
- opts.ylabel : label of y-axis
- opts.ytick : show ticks on y-axis (boolean)
- opts.ytickmin : first tick on y-axis (number)
- opts.ytickmax : last tick on y-axis (number)
- opts.ytickvals : locations of ticks on y-axis (table of numbers)
- opts.yticklabels : ticks labels on y-axis (table of strings)
- opts.ytickstep : distances between ticks on y-axis (number)
- opts.ytickfont : font for y-axis labels (dict of font information)
- opts.marginleft : 左边框 (in pixels)
- opts.marginright :右边框 (in pixels)
- opts.margintop : 上边框 (in pixels)
- opts.marginbottom: 下边框 (in pixels)
- opts.lagent=['']: 显示图标

参考链接

  1. 轻松学 Pytorch–Visdom 可视化
  2. GitHub 地址
  3. PyTorch的远程可视化神器visdom

PyTorch 训练可视化教程 visdom相关推荐

  1. pytorch训练可视化包visdom的使用

    visdom的使用 一.简介 二.安装与启动 三.设计思路 四.在迭代训练中的绘图 五.一般绘图 六.基本调整与保存文件 1.`调整大小.拖拽`:长按拖动即可,右下角落长按移动即可放大缩小 2.`查看 ...

  2. Pytorch的可视化工具visdom的基本使用

    Pytorch的可视化工具visdom的基本使用 一.简介 Visdom 是 Facebook 专门为Pytorch开发的一款用于创建.组织和共享实时丰富数据的开源可视化工具.支持 Torch 和 N ...

  3. 【深度学习】PyTorch深度学习训练可视化工具visdom

    PyTorch Author:louwill Machine Learning Lab 在进行深度学习实验时,能够可视化地对训练过程和结果进行展示是非常有必要的.除了Torch版本的TensorBoa ...

  4. PyTorch之—可视化(Visdom/TensorboardX)

    文章目录 一.Visdom 安装与使用 小案例 二.TensorBoardX 案例一 案例二 使用PROJECTOR对高维向量可视化 绘制网络结构 一.Visdom Visdom是Facebook在2 ...

  5. PyTorch深度学习训练可视化工具tensorboardX

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 之前笔者提到了PyTorch的专属可视化工具visdom,参看Py ...

  6. 【CV】Pytorch一小时教程添加损失函数图像可视化训练过程

    Pytorch一小时教程中的图像分类器(GPU版本)的原代码为: import torch.optim as optim import torch import torchvision import ...

  7. PyTorch学习笔记(13)——强力的可视化工具visdom

    今天,让我们来放松一下大脑,学习点轻松的东西----可视化工具Visdom,它可以让我们在使用PyTorch训练模型的时候,可视化中间的训练情况,无论是loss变化还是中间结果比较.相比干呆呆的瞪着命 ...

  8. PyTorch项目使用TensorboardX进行训练可视化

    PyTorch项目使用TensorboardX进行训练可视化 什么是TensorboardX 配置TensorboardX 使用 pip 安装 从源码安装 使用TensorboardX 参考资料 什么 ...

  9. PyTorch 模型训练实用教程(附代码)

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx PyTorch 能在短时间内被众多研究人员和工程师接受并推崇是因为其有着诸多优点,如采用 Py ...

最新文章

  1. python字典转字符串后里面的冒号还在吗_Python字典、字符串及列表的相互转换
  2. tools.jar seem to ....
  3. js(function(){alert(‘’‘)})
  4. shell设计精髓_交互设计精髓
  5. 在Windows 10上安装TensorFlow 2.2.0 RC4版
  6. layui 按钮点击一次后失效_electron-vue自定义边框后点击事件失效问题
  7. php取json子对象属性,PHP json获取相关对象值
  8. Spring之不同步的Bean
  9. 甲骨文解雇Java相关人员 Oracle cuts Java execs
  10. (原创)c++11改进我们的模式之改进单例模式
  11. 在线作图|在线做完整的Lefse分析
  12. 国内搜索引擎技术现状
  13. LollipopGo分布式架构--DB反向代理服务器设计
  14. Word文件批量查找替换字符串
  15. pg比mysql优势_postgresql比mysql有多少优势
  16. 二进制文件操作-存储与读取
  17. k8s 配置存储之 Configmap secret
  18. 有一个姑娘,我无法忘记她
  19. 2019上海市大学生网络安全大赛部分web题解
  20. python笔记-05(条件、循环及其他语句)

热门文章

  1. Python sys 模块
  2. .Net NPOI 根据excel模板导出excel、直接生成excel
  3. 利用ASP.netCore自带DI(DependencyInjection)实现批量依赖注入
  4. DSP6455的EMIFA口
  5. C语言的本质(4)——浮点数的本质与运算
  6. CentOS 下 rpm包与 yum 安装与卸载
  7. UA MATH566 统计理论 QE练习题2.2
  8. 记一次内核模块查看 - 初步通过文件厂商判断有无可疑内核模块
  9. 15.centos7基础学习与积累-001
  10. Python数据类型方法总结