Loading [MathJax]/jax/output/CommonHTML/config.js
部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pytorch学习笔记(八):PytTorch可视化工具 visdom

pytorch学习笔记(八):PytTorch可视化工具 visdom

作者头像
ke1th
发布于 2018-01-02 03:46:16
发布于 2018-01-02 03:46:16
2.9K00
代码可运行
举报
运行总次数:0
代码可运行

Visdom PyTorch可视化工具

本文翻译的时候把 略去了 Torch部分。

项目地址

一个灵活的可视化工具,可用来对于 实时,富数据的 创建,组织和共享。支持TorchNumpy

  • 总览
  • 基本概念
  • Setup
  • 启动
  • 可视化接口
  • 总结

总览

Visdom目的是促进远程数据的可视化,重点是支持科学实验。。

向您和您的合作者发送可视化 图像,图片和文本。

通过编程组织您的可视化空间,或者通过UI为实时数据创建dashboards,检查实验的结果,或者debug实验代码。

基本概念

Visdom有一组简单的特性,可以用它们组合成不同的用例。

Panes(窗格)

UI刚开始是个白板–您可以用图像,图片,文本填充它。这些填充的数据出现在 Panes 中,您可以这些Panes进行 拖放,删除,调整大小和销毁操作。Panes是保存在 envs 中的, envs的状态 存储在会话之间。您可以下载Panes中的内容–包括您在svg中的绘图。

Tip: 您可以使用浏览器的放大缩小功能来调整UI的大小。

Environments(环境)

您可以使用envs对可视化空间进行分区。默认地,每个用户都会有一个叫做mainenvs。可以通过编程或UI创建新的envsenvs的状态是长期保存的。

您可以通过 url: http://localhost.com:8097/env/main访问特定的env。 You can access a specific env via url: http://localhost.com:8097/env/main. 如果您的服务器是被托管的,那么您可以将此url分享给其他人,那么其他人也会看到您的可视化结果。

管理 Envs: 在初始化服务器的时候,您的 envs 默认通过$HOME/.visdom/ 加载。您也可以将自定义的路径 当作命令行参数 传入。如果您移除了Env文件夹下的.json文件,那么相应的环境也会被删除。

State(状态)

一旦您创建了一些可视化,状态是被保存的。服务器自动缓存您的可视化–如果您重新加载网页,您的可视化会重新出现。

  • Save: 你可以手动的保存env通过点击save按钮。它会首先序列化env的状态,然后以json文件的形式保存到硬盘上,包括窗口的位置。 同样,您也可以通过编程来实现env的保存。 当面对一些十分复杂的可视化,例如参数设置非常重要,这中保存env状态的方法是十分有用的。例:数据丰富的演示,模型的训练 dashboard, 或者 系统实验。这种设计依旧可以使这些可视化十分容易分享和复用。
  • Fork: 有过您输入了一个新的env 名字,saving会建立一个心的env – 有效的forking之前的状态。(注:这个fork等价于github的fork,跟复制的意思差不多)

Setup

需要 Python 2.7/3 (and optionally Torch7)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Install Python server and client,如果您使用python的话,装这一个就可以了。
pip install visdom

启动

启动服务器(可能在screen或者tmux中):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python -m visdom.server

一旦启动服务器,您就可以通过在浏览器中输入http://localhost:8097来访问 Visdomlocalhost可以换成您的托管地址。

If the above does not work, try using an SSH tunnel to your server by adding the following line to your local ~/.ssh/config: LocalForward 127.0.0.1:8097 127.0.0.1:8097.

Python example
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import visdom
import numpy as np
vis = visdom.Visdom()
vis.text('Hello, world!')
vis.image(np.ones((3, 10, 10)))

Demos

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python example/demo.py

可视化接口

Visdom支持下列API。由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 : 序列化状态

关于上述API更详尽的解释将在下面给出。为了对visdom的能力有一个快速的了解,您可以看一下 example ,或者,您可以继续往下看。

这些API的确切输入类型有所不同,尽管大多数API 的输入包含,一个tensor X(保存数据)和一个可选的tensor Y(保存标签或者时间戳)。所有的绘图函数都接收一个可选参数win,用来将图画到一个特定的window上。每个绘图函数也会返回当前绘图的win。您也可以指定 汇出的图添加到哪个env上。 (这里的window的意思就是之前说的Pane)。

plot.scatter

这个函数是用来画2D3D数据的散点图。它需要输入 N*2N*3的 tensor X来指定N个点的位置。一个可供选择的长度为Nvector用来保存X中的点对应的标签(1 到 K)。 – 标签可以通过点的颜色反应出来。

scatter()支持下列的选项:

  • options.colormap : 色图(控制图的颜色) (string; default = 'Viridis')
  • options.markersymbol: 标记符号 (string; default = 'dot')
  • options.markersize : 标记大小(number; default = '10')
  • options.markercolor : 每个标记的颜色. (torch.*Tensor; default = nil)
  • options.legend : 包含图例名字的table

options.markercolor 是一个包含整数值的TensorTensor的形状可以是 NN x 3KK x 3.

  • Tensor of size N: 表示每个点的单通道颜色强度。 0 = black, 255 = red
  • Tensor of size N x 3: 用三通道表示每个点的颜色。 0,0,0 = black, 255,255,255 = white
  • Tensor of size K and K x 3: 为每个类别指定颜色,不是为每个点指定颜色。
plot.line

这个函数用来画 线图。它需要一个形状为N或者N×M的tensor Y,用来指定 M条线的值(每条线上有N个点)。和一个可供选择的 tensor X 用来指定对应的 x轴的值; X可以是一个长度为N的tensor(这种情况下,M条线共享同一个 x轴),也可以是形状和Y一样的tensor。

The following options are supported:

  • options.fillarea : 填充线下面的区域 (boolean)
  • options.colormap : 色图 (string; default = 'Viridis')
  • options.markers : 显示点标记 (boolean; default = false)
  • options.markersymbol: 标记的形状 (string; default = 'dot')
  • options.markersize : 标记的大小 (number; default = '10')
  • options.legend : 保存图例名字的 table
plot.stem

这个函数用来画茎叶图。它需要一个 形状为N或者N*M的 tensor X 来指定M时间序列中N个点的值。一个可选择的Y,形状为N或者N×M,用Y来指定时间戳,如果Y的形状是N,那么默认M时间序列共享同一个时间戳。

支持以下特定选项:

  • options.colormap: colormap (string; default = 'Viridis')
  • options.legend : table containing legend names
plot.heatmap

这个函数用来画热力图。它输入一个 形状为N×M的 tensor XX指定了热力图中位置的值。

支持下列特定选项:

  • options.colormap : 色图 (string; default = 'Viridis')
  • options.xmin : 小于这个值的会被剪切成这个值(number; default = X:min())
  • options.xmax : 大于这个值的会被剪切成这个值 (number; default = X:max())
  • options.columnnames: 包含x轴标签的table
  • options.rownames : 包含y轴标签的table
plot.bar

这个函数可以画 正常的,堆起来的,或分组的的条形图。 输入参数:

  • X(tensor):形状 NN×M,指定每个条的高度。如果XM列,那么每行的值可以看作一组或者把他们值堆起来(取决与options.stacked是否为True)。
  • Y(tensor, optional):形状 N,指定对应的x轴的值。

支持以下特定选项:

  • options.columnnames: table containing x-axis labels
  • options.stacked : stack multiple columns in X
  • options.legend : table containing legend labels
plot.histogram

这个函数用来画指定数据的直方图。他需要输入长度为 N 的 tensor XX保存了构建直方图的值。

支持下面特定选项:

  • options.numbins: bins的个数 (number; default = 30)
plot.boxplot

这个函数用来画箱型图:

输入:

  • X(tensor): 形状 NN×M,指定做第m个箱型图的N个值。

支持以下特定选项:

  • options.legend: labels for each of the columns in X
plot.surf

这个函数用来画表面图: 输入:

  • X(tensor):形状 N×M,指定表面图上位置的值.

支持以下特定选项:

  • options.colormap: colormap (string; default = 'Viridis')
  • options.xmin : clip minimum value (number; default = X:min())
  • options.xmax : clip maximum value (number; default = X:max())
plot.contour

这个函数用来画轮廓图。

输入:

  • X(tensor):形状 N×M,指定了轮廓图中的值

支持以下特定选项:

  • options.colormap: colormap (string; default = 'Viridis')
  • options.xmin : clip minimum value (number; default = X:min())
  • options.xmax : clip maximum value (number; default = X:max())
plot.quiver

这个函数用来画二维矢量场图。

输入:

  • X(tensor): 形状 N*M
  • Y(tensor):形状 N*M
  • gridX(tensor, optional):形状 N*M
  • gradY(tensor, optional): 形状 N*M XY决定了 箭头的长度和方向。可选的gridXgridY指定了偏移。

支持下列特定选项:

  • options.normalize: 最长肩头的长度 (number)
  • options.arrowheads: 是否现实箭头 (boolean; default = true)
plot.image

这个函数用来画 图片。 输入:

  • img(tensor): shape(C*H*W)。

支持下面特定选项:

  • options.jpgquality: JPG quality (number 0-100; default = 100)

plot.video

这个函数 播放一个 video。 输入: video 的文件名,或者是一个 shape 为L*H*W*Ctensor。这个函数不支持其它特定的功能选项。

注意:使用tensor作为输入的时候,需要安装ffmpeg。 能不能播放video取决你使用的浏览器:浏览器必须要支持Theano codec in an OGG container。(chrome可以用)。

plot.svg

此函数绘制一个SVG对象。输入是一个SVG字符串或 一个SVG文件的名称。该功能不支持任何特定的功能 options

plot.text

此函数可在文本框中打印文本。输入输入一个text字符串。目前不支持特定的options

plot.mesh

此函数画出一个网格图。

输入:

  • X(tensor): shape(N*2N*3) 定义N个顶点
  • Y(tensor, optional):shape(M*2M×3) 定义多边形

支持下列特定选项:

  • options.color: color (string)
  • options.opacity: 多边形的不透明性 (number between 0 and 1)

Customizing plots

绘图函数使用可选的options表作为输入。用它来修改默认的绘图属性。所有输入参数在单个表中指定;输入参数是基于输入表中键的匹配。

下列的选项除了对于plot.imgplot.txt不可用以外,其他的绘图函数都适用。我们称他为 通用选项。

  • options.title : figure title
  • options.width : figure width
  • options.height : figure height
  • options.showlegend : show legend (true or false)
  • options.xtype : type of x-axis ('linear' or 'log')
  • options.xlabel : label of x-axis
  • options.xtick : show ticks on x-axis (boolean)
  • options.xtickmin : first tick on x-axis (number)
  • options.xtickmax : last tick on x-axis (number)
  • options.xtickstep : distances between ticks on x-axis (number)
  • options.ytype : type of y-axis ('linear' or 'log')
  • options.ylabel : label of y-axis
  • options.ytick : show ticks on y-axis (boolean)
  • options.ytickmin : first tick on y-axis (number)
  • options.ytickmax : last tick on y-axis (number)
  • options.ytickstep : distances between ticks on y-axis (number)
  • options.marginleft : left margin (in pixels)
  • options.marginright : right margin (in pixels)
  • options.margintop : top margin (in pixels)
  • options.marginbottom: bottom margin (in pixels)

其它的一些选项就是函数特定的选项,在上面API介绍的时候已经提到过。

总结

明确几个名词:

  • env:看作一个大容器
  • pane: 就是用于绘图的小窗口,在代码中叫 window

使用Visdom就是在env中的pane上画图。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PyTorch深度学习训练可视化工具visdom
在进行深度学习实验时,能够可视化地对训练过程和结果进行展示是非常有必要的。除了Torch版本的TensorBoard工具TensorBoardX之外,Torch官方也提供了一款非常好用的可视化神器——visdom。visdom是一款用于创建、组织和共享实时大量训练数据可视化的灵活工具。
AI算法与图像处理
2019/12/26
1.6K0
PyTorch深度学习训练可视化工具visdom
资源 | 挑战谷歌,Facebook 发布交互数据可视化工具 Visdom
选自GitHub 机器之心编译 参与:微胖、吴攀 FAIR 发布了 Visdom,一款可在 Torch、PyTorch 以及 NumPy 上实现交互式数据可视化的工具套件。FAIR 表示,他们已经内部使用了一段时间并认为这款工具非常有助于研究。Visdom 创作者为 FAIR 的 Allan Jabri、Zeming Lin 以及 Laurens van der Maaten。其中,Allan Jabri 承担了绝大部分研发工作。 项目地址:https://github.com/facebookresear
机器之心
2018/05/07
8860
资源 | 挑战谷歌,Facebook 发布交互数据可视化工具 Visdom
visdom的安装及在pytorch下损失函数的可视化应用
更新:新版visdom0.1.7安装方式为:conda install -c srivasv visdom 
胡多钱
2018/09/18
3.1K0
visdom的安装及在pytorch下损失函数的可视化应用
pytorch进阶知识-Visdom可视化
本节介绍一个用于辅助分析、查看loss、accuracy等的重要工具—Visdom可视化工具。
用户6719124
2019/11/17
8220
轻松学Pytorch–Visdom可视化
Visdom是Facebook专为PyTorch开发的实时可视化工具包,其作用相当于TensorFlow中的Tensorboard,灵活高效且界面美观,下面就一起来学习下如何使用吧!如果想更多了解关于Visdom的使用可以参考官方
OpenCV学堂
2020/06/04
1.9K0
详解PyTorch可视化工具visdom(一)
在深度学习领域,模型训练是一个必须的过程,因此常常需要实时监听并可视化一些数据,如损失值loss,正确率acc等。在Tensorflow中,最常使用的工具非Tensorboard莫属;在Pytorch中,也有类似的TensorboardX,但据说其在张量数据加载的效率方面不如visdom。visdom是FaceBook开发的一款可视化工具,其实质是一款在网页端的web服务器,对Pytorch的支持较好。
全栈程序员站长
2022/07/21
6830
详解PyTorch可视化工具visdom(一)
visdom简易教程
如果想用pytorch来做神经网络学习和训练,那么不管想不想,你都得学visdom这个可视化工具,因为别人全部用这个玩意在进行可视化显示,如果不会用有时甚至别人的代码都跑不起来。这里这么说似乎显得有点怨念,这是真的,因为本人一开始并不想要去搞它。但后来学着学着发现这真是个神器,难怪那么多人一上来直接要求先装上这个。
全栈程序员站长
2022/09/14
4180
visdom简易教程
资源 | 价值迭代网络的PyTorch实现与Visdom可视化
选自GitHub 作者:Xingdong Zuo 机器之心编译 参与:吴攀 《价值迭代网络(Value Iteration Networks)》是第 30 届神经信息处理系统大会(NIPS 2016)的最佳论文奖(Best Paper Award)获奖论文,机器之心曾在该论文获奖后第一时间采访了该论文作者之一吴翼(Yi Wu),参见《独家 | 机器之心对话 NIPS 2016 最佳论文作者:如何打造新型强化学习观?(附演讲和论文)》。吴翼在该文章中介绍说: VIN 的目的主要是解决深度强化学习泛化能力较弱的
机器之心
2018/05/07
1.2K0
资源 | 价值迭代网络的PyTorch实现与Visdom可视化
PyTorch 可视化工具:TensorBoard、Visdom
TensorBoard 一般都是作为 TensorFlow 的可视化工具,与 TensorFlow 深度集成,它能够展现 TensorFlow 的网络计算图,绘制图像生成的定量指标图以及附加数据等。
用户2323866
2021/06/17
1.1K0
使用Matplotlib对数据进行高级可视化(基本图,3D图和小部件)
可视化在当今世界许多领域的结果传播中发挥着重要作用。如果没有适当的可视化,很难揭示结果,理解变量之间的复杂关系并描述数据的趋势。
代码医生工作室
2019/06/21
4K0
使用Matplotlib对数据进行高级可视化(基本图,3D图和小部件)
12个最常用的matplotlib图例 !!
折线图(Line Plot):用于显示数据随时间或其他连续变量的变化趋势。在实际项目中,可以用于可视化模型性能随着训练迭代次数的变化。
JOYCE_Leo16
2024/03/19
7880
12个最常用的matplotlib图例 !!
Plotly,一个超强的Python可视化库!
数据可视化是数据分析和探索的一个重要方面,它有助于深入了解数据集中的潜在模式、趋势和关系。
小F
2023/12/21
7480
Plotly,一个超强的Python可视化库!
【深度学习实验】数据可视化
归一化处理是一种常用的数据预处理技术,用于将数据缩放到特定的范围内,通常是[0,1]或[-1,1]。这个过程可以确保不同特征或指标具有相似的数值范围,避免某些特征对模型训练的影响过大。
Qomolangma
2024/07/29
1720
【深度学习实验】数据可视化
Python数据可视化大全:Matplotlib、Seaborn、Bokeh和Plotly实战指南
数据可视化是数据科学和分析中不可或缺的一部分,而Python中的Matplotlib和Seaborn库为用户提供了强大的工具来创建各种可视化图表。本文将介绍如何使用这两个库进行数据可视化,并提供一些实用的代码示例和解析。
一键难忘
2024/04/18
2.4K0
基于Matplotlib的高级数据可视化技术与实践探索
文章链接:https://cloud.tencent.com/developer/article/2466769
一键难忘
2024/11/21
4030
数据可视化工具Visdom
Visdom,用于创建、组织和共享实时丰富数据可视化的灵活工具。支持Python。
磐创AI
2020/02/12
4.1K0
数据可视化工具Visdom
多维数据可视化技术,Radviz可视化原理,向量化的 Radviz(vectorized Radviz,简称 VRV)
多维和高维数据普遍存在于我们的日常生活和科学研究中 . 比如 , 手机就包括品牌、型号、尺寸、重量、 生产日期、屏幕尺寸和电池容量等几十个属性; 又如 , 生物医学领域中的基因表达数据经常会产生成百上千个 属性. 鉴于人类对于数据的理解集中在 2D 或 3D 的低维空间 , 因此 , 采用信息可视化技术将多维数据绘制到低维 屏幕空间是实现人与多维数据交互分析的一种解决思路. 多维和高维数据的可视化一直以来都是一个热门的研究领域. 以主成分分析 (principle component analysis, 简称 PCA) 和多维尺度分析 (multi-dimensional scaling, 简称 MDS) 为代表的传统高维数据降维方法 [6] , 是通过数学方法将高维数据降维到 2D 或 3D 的低维空间中 , 并尽量保留高维空间中的原有特性和聚类关系 , 但这类方法 会损失数据在原始维度上的细节信息, 而且无法表现维度之间的关系 . 以散点图矩阵 (scatterplot matrix) [7] 和平行坐标(parallel coordinates) [8] 为代表的经典可视化方法虽然可以保留多维数据在每个维度上的信息 , 并突出维度间关系, 但是当维度数量增多时 , 有限的屏幕空间难以容纳大量维度 , 而且还会存在过度绘制问题 . 以 Radviz [1]和星型坐标(star coordinates) [9,10] 为代表的高维数据径向型投影方法 , 可以大量节约屏幕空间 , 但维度的排列顺序对数据投影结果影响很大, 同时还存在数据重叠问题 . 此外 , 还有一部分研究提出先基于用户经验或算法准则提取高维空间中的部分维度, 然后在维度子集中结合上述技术完成高维数据分析 , 这类方法的代表是特征选择 与子空间分析
zhangjiqun
2024/12/14
2340
多维数据可视化技术,Radviz可视化原理,向量化的 Radviz(vectorized Radviz,简称 VRV)
10分钟入门Matplotlib: 数据可视化介绍&使用教程
“一张图胜过千言万语”,对于数据来说同样地,“一张可视化的图片胜过一张复杂的数据表格或报告”。
deephub
2020/05/09
1.9K0
10分钟入门Matplotlib: 数据可视化介绍&使用教程
一文汇总Python可视化工具及图表
正所谓“一图胜千言”,数据可视化是数据科学中重要的一项工作,在面对海量的大数据中,如果没有图表直观的展示复杂数据,我们往往会摸不着头脑。通过可视化的图表可以直观了解数据潜藏的重要信息,以便在业务和决策中发现数据背后的价值!
算法进阶
2023/10/26
8480
一文汇总Python可视化工具及图表
利用mpld3提升Matplotlib图表的交互性与可视化效果
Matplotlib 是Python中最常用的数据可视化库之一,提供了丰富的绘图功能。然而,其默认的交互性有限。为了增强Matplotlib图表的交互性,我们可以使用 mpld3 库,它可以将Matplotlib图表转换为基于D3.js的交互式图表,使得图表更具吸引力和互动性。
一键难忘
2024/10/07
4880
推荐阅读
相关推荐
PyTorch深度学习训练可视化工具visdom
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验