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

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

0. 前言

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

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

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

PyTorch学习笔记(13)——强力的可视化工具visdom_第1张图片

1. 总览(overview)

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

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

2. 概念(concepts)

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

① Windows——窗口

PyTorch学习笔记(13)——强力的可视化工具visdom_第2张图片

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

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

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

② Enviroments——环境

UI的左上角,有一条这样的东西:这是可视化空间所在的环境(envs)——可以理解为①中windows所在的context,默认情况下,每个用户会拥有一个叫做main的env
PyTorch学习笔记(13)——强力的可视化工具visdom_第3张图片

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

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

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

③ State——状态

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

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

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

PyTorch学习笔记(13)——强力的可视化工具visdom_第4张图片

④ 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,刚执行的时候,会开始下载一些脚本,需要等待一会:
PyTorch学习笔记(13)——强力的可视化工具visdom_第5张图片

启动起来后,写一段测试代码如下,叫做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)))

得到结果:
PyTorch学习笔记(13)——强力的可视化工具visdom_第6张图片

4. 绘图例子

首先,要加载一些模块:
PyTorch学习笔记(13)——强力的可视化工具visdom_第7张图片

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

4.1 image demo

PyTorch学习笔记(13)——强力的可视化工具visdom_第8张图片

其对应的结果分别为:
PyTorch学习笔记(13)——强力的可视化工具visdom_第9张图片

PyTorch学习笔记(13)——强力的可视化工具visdom_第10张图片

4.2 为windows注册callbacks

PyTorch学习笔记(13)——强力的可视化工具visdom_第11张图片

可以看到,我们可以跟这个带callbacks的windows进行交互:
PyTorch学习笔记(13)——强力的可视化工具visdom_第12张图片

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

5. 参考资料

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

你可能感兴趣的:(机器学习,深度学习,PyTorch,PyTorch框架学习)