今天,让我们来放松一下大脑,学习点轻松的东西————可视化工具Visdom,它可以让我们在使用PyTorch训练模型的时候,可视化中间的训练情况,无论是loss变化还是中间结果比较。相比干呆呆的瞪着命令行,Visdom让我们的调参之路变得更加生动和活泼了.~

0. 前言

对于一些任务,尤其是难以收敛以及情况复杂的,如果在训练过程中,实时可视化训练情况,将会让我们对训练手段进行及时调整,更好的达到目标,避免不收敛、过拟合以及其它情况。这样,我们就可以在训练指标的判断基础上,加上感性的部分(可视化结果),从而实现双管齐下。

Visdom 是一个由FacebookResearch开发的一个灵活的可视化工具,可用来对实时(live)——如网络训练中产生的结果,富数据(rich data)——如HTML,进行组织和共享。支持Torch和Numpy还有PyTorch。

Visdom 也可以实现远程数据的可视化,对科学实验有很大帮助。我们可以远程的发送图片和数据,并进行在ui界面显示出来,检查实验结果,或者debug。

1. 总览(overview)

按照官方的说法,开发Visdom的目的是使得数据(无论是在远程还是本地)的可视化,用以支持和促进科学试验。

Visdom aims to facilitate visualization of (remote) data with an emphasis on supporting scientific experimentation.

2. 概念(concepts)

Visdom有一些简单的特性,我们可以根据这个特性来构建属于自己的特定的例程(use-cases)。

① Windows——窗口

当你刚刚打开UI会发现,这是个白板,只有一片蓝色,别的啥都没有…。我们可以用图形、图像和文本填充它。注意,无论是文本还是图像、视频,都需要将这些内容放在一个叫做windows的container里面,你可以对这些windows(窗口)拖拽,缩放以及删除。

其中,windows存在于envs,envs的**status(状态)可以跨sessions(会话)**保存。

此外,windows还支持callbacks(回调函数),也就是说,当你在一个windows上输入一些内容, 如果后端写好了对应的处理逻辑,那么callbacks会要求Visdom对象接收前端传来的输入给后端的处理代码,并将处理后的结果返回到前端显示,也就是windows可以支持交互~

② Enviroments——环境

UI的左上角,有一条这样的东西:这是可视化空间所在的环境(envs)——可以理解为①中windows所在的context,默认情况下,每个用户会拥有一个叫做main的env。

如果有额外的需求,比如要在不同的环境中展示多种层次的内容,用户可以在UI(前端)或者后端创建新的env。环境变量的状态被长期保存。

可以看到,我们可以在UI任意的切换不同的环境(env)。当你选择了一个新的env,visdom将会向服务器请求存在于该env中的图像。

在**env selector(环境选择器)**后面,有一个小的橡皮擦eraser button,用户可以使用它来清除当前env下的所有内容。如果你的展示是动态的,也就是数据源源不断需要展示,那么后续的图像会 继续展示在此env下。

③ State——状态

当你在某些env下创建了一些可视化图像内容后,服务器会自动缓存这些可视化结果(设置checkpoint)。如果你重新加载此页面或者重新打开服务器,这些图像内容会重现的。

当然,你也可以手动的保存这些env的状态:

  • save: 可以序列化env的状态,并以json文件保持在磁盘中。
  • fork: 当输入一个新的名字,会复制当前的状态到这个new env下。

④ Filter——过滤

这个功能挺容易理解的:就是根据你在filter窗口的输入(右上角)对当前env下所有windows的title进行字符串正则匹配,只显示该env下跟输入的图像名字匹配的图像:

3. 安装(setup)& 启动例子(demo)

我用的是PyTorch 0.4.1,在Python2.7/3.x都可以。Visdom直接可以安装在这个环境下,我的是python3.x,直接pip install visdom即可。

安装后,不需要代码写好,就可以在命令行里面跑visdom。
启动方法: python -m visdom.server或者直接敲visdom,刚执行的时候,会开始下载一些脚本,需要等待一会:

启动起来后,写一段测试代码如下,叫做demo.py,执行python demo.py

import visdom
import numpy as np
vis = visdom.Visdom()
vis.text('Hello, world!')
vis.image(np.ones((3, 10, 10)))

得到结果:

4. 绘图例子

首先,要加载一些模块:

这里,直接上代码,具体关于visdom的各个API的说明,请查看visdom——A flexible tool for creating, organizing, and sharing visualizations of live, rich data. Supports Torch and Numpy.

4.1 image demo

其对应的结果分别为:


4.2 为windows注册callbacks

可以看到,我们可以跟这个带callbacks的windows进行交互:

当然,也可以加载音频和视频啦,还有WebGL等,这里就不展开了。

5. 参考资料

[1] Visdom 可视化工具 教程 (pytorch)
[2] Visdom 官方说明 (FacebookResearch)

PyTorch学习笔记(13)——强力的可视化工具visdom相关推荐

  1. Python学习笔记——数据分析之数据可视化工具实战案例:世界高峰数据可视化

    世界高峰数据可视化 (World's Highest Mountains) 参考:https://www.kaggle.com/alex64/d/abcsds/highest-mountains/le ...

  2. PyTorch学习笔记2:nn.Module、优化器、模型的保存和加载、TensorBoard

    文章目录 一.nn.Module 1.1 nn.Module的调用 1.2 线性回归的实现 二.损失函数 三.优化器 3.1.1 SGD优化器 3.1.2 Adagrad优化器 3.2 分层学习率 3 ...

  3. PyTorch学习笔记(七):PyTorch可视化

    PyTorch可视化 往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本系列目录: PyTorch学习笔记(一) ...

  4. PyTorch学习笔记(13)--现有网络模型的使用及修改

    PyTorch学习笔记(13)–现有网络模型的使用及修改     本博文是PyTorch的学习笔记,第13次内容记录,主要介绍如何使用现有的神经网络模型,如何修改现有的网络模型. 目录 PyTorch ...

  5. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  6. PyTorch学习笔记(四):PyTorch基础实战

    PyTorch实战:以FashionMNIST时装分类为例: 往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本 ...

  7. R语言小白学习笔记13—基本统计

    R语言小白学习笔记13-基本统计 笔记链接 学习笔记13-基本统计 13.1 概括性统计量 13.2 相关系数和协方差 13.3 t-检验 13.3.1 单样本t检验 13.3.2 两样本t检验 13 ...

  8. # PyTorch学习笔记(15)--神经网络模型训练实战

    PyTorch学习笔记(15)–神经网络模型训练实战     本博文是PyTorch的学习笔记,第15次内容记录,主要是以一个实际的例子来分享神经网络模型的训练和测试的完整过程. 目录 PyTorch ...

  9. Caffe学习系列(13):数据可视化环境(python接口)配置

    原文有更新: Caffe学习系列(13):数据可视化环境(python接口)配置 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5088399. ...

最新文章

  1. P3916 图的遍历
  2. java动效_Android 界面漩涡扭曲动效实现
  3. kaggle入门竞赛之泰坦尼克事故存活预测(xgboost方法)
  4. 记录sqlserver中使用变量
  5. “约见”面试官系列之常见面试题之第六十六篇之事件委托的原理和实现(建议收藏)
  6. 阿尔伯塔大学计算机科学本科几年,本科——21阿尔伯塔大学CS专业早录取
  7. 详解浏览器 428 状态码 428 Precondition Required
  8. Mac切换英文大写,不能锁定,该如何解决
  9. 【Git/Github学习笔记】Git常用命令(推送到远程)
  10. windows下,可替换telnet的工具tcping.exe
  11. em算法python包_关于EM算法原理的分析与理解(Python实现)
  12. QNX 系统日志设计
  13. HttpClient:connection still allocated.解决方法
  14. Busiest Computing Nodes (线段树维护区间最小值)
  15. c语言打印a-Z字母的方法
  16. ZZ稻盛和夫:经营为何需要哲学
  17. Linux-网络-netstat命令
  18. 实时linux 编程,uClinux实时改造技术
  19. excel 首行下示例格式_Excel条件格式示例
  20. 羡慕别人网站小图标好看?推荐两个免费的图标网站 教你使用图标装饰自己的网站

热门文章

  1. 花10分钟看一看少走30年弯路
  2. 在读Phd如何准备公派访学?
  3. Oculus Home登录卡在提示在浏览器中继续操作
  4. captcha.class.php,clicaptcha/clicaptcha.class.php at master · xnianq/clicaptcha · GitHub
  5. MATLAB-如何在全图中设置局部放大图
  6. echarts地图更改具体某省份颜色以及更改地图整体颜色 china.js echarts geo map
  7. 静走天后宫,食购十四涌
  8. 西门子1200与3台欧姆龙E5cc温控器通讯程序
  9. flex垂直居中,水平居中和其他布局方式
  10. 恶搞php代码,恶搞源码。 - 各类源码 - 中国红客联盟 - Powered by HUC