Pytorch可视化之Visdom使用实例
作者:ting_qifengl 发布时间:2021-01-05 12:16:13
一、Visdom简介
Visdom是由Facebook公司开发的一个进行数据可视化的Web应用程序,支持Torch、Numpy、Pytorch这3个库的创建、管理和分享实时的数据可视化结果。
二、安装和运行
可直接使用pip进行安装,命令如下:
pip install visdom
安装过程如下:
安装完成后,运行下面的代码启动visdom服务器(运行需要时间,需要稍等一下;下图中的报错ERROR我没有管,不影响正常运行):
python -m visdom.server
按照提示,在浏览器中输入http://localhost:8097就可以访问visdom了。初始界面如下图所示,是一个没有任何视窗的main环境。
三、可视化例子
1、输出Hello World!
打开开发工具(我用的是Pycharm2020.3),新建程序文件,输入以下代码:
import visdom
vis = visdom.Visdom()
vis.text("Hello World!")
点击运行,返回查看浏览器。这时浏览器会出现一个视窗,内容为“Hello World!”。
拖拽视窗右下角箭头处(如图绿框处)可对视窗大小进行缩放,拖动视窗顶部横条(如图红框处)可以移动视窗。
2、显示图像
visdom可以直接显示Tensor格式的图像数据。
打开开发工具,新建程序文件,输入以下代码:
import visdom
from PIL import Image
import torchvision.transforms.functional as TF
demo_pic = Image.open("1.jpg")
img_tensor = TF.to_tensor(demo_pic)
vis = visdom.Visdom()
vis.image(img_tensor)
结果如下图所示:
可以用images()函数同时显示多张图片,代码如下:
import visdom
from PIL import Image
import torchvision.transforms.functional as TF
import torch
demo_pic = Image.open("1.jpg")
img_tensor = TF.to_tensor(demo_pic)
img_tensors = torch.Tensor([img_tensor.numpy(), img_tensor.numpy()])
vis = visdom.Visdom()
vis.images(img_tensors)
结果如下:
3、绘制散点图
使用scatter()函数可以绘制二维或者三维的散点图。代码如下:
import visdom
import numpy as np
import torch
Y = np.random.rand(100)
vis = visdom.Visdom()
# vis = visdom.Visdom(env='my_wind')#设置环境窗口的名称是'my_wind',如果不设置默认为main
# 2—D
twoD_scatter = vis.scatter(X=torch.rand(100, 2),
Y=(Y + 1.5).astype(int), # 转换成100个1或2的整数
opts=dict(
legend=['Apples', 'Pears'], # 图例名称
xtickmin=-1, # 设置x坐标轴下限
xtickmax=2.5, # 设置x坐标轴上限
xtickstep=0.5, # 设置x坐标轴间隔
ytickmin=-1,
ytickmax=2.5,
ytickstep=0.5,
markersymbol='dot' # 设置数据显示样式
),
)
# 3-D
# 3d scatterplot with custom labels and ranges
threeD_scatter = vis.scatter(X=np.random.rand(100, 3),
Y=(Y + 1.5).astype(int),
opts=dict(
legend=['Men', 'Women'],
markersize=5, # 标记大小
xtickmin=0,
xtickmax=2,
xlabel='Arbitrary', # 标签
xtickvals=[0, 0.75, 1.6, 2], # 设置坐标轴显示值
ytickmin=0,
ytickmax=2,
ytickstep=0.5,
ztickmin=0,
ztickmax=1,
ztickstep=0.5,
)
)
运行结果如下图所示:
如果想要通过程序实现散点图参数的更新,可以使用update_window_opts()函数,代码如下:
vis.update_window_opts(
win=twoD_scatter,
opts=dict(
legend=['Apples', 'Pears'],
xtickmin=0,
xtickmax=1,
xtickstep=0.5,
ytickmin=0,
ytickmax=1,
ytickstep=0.5,
markersymbol='dot'
)
)
update_window_opts()传入两个参数,第一个是视窗的实例,例子中是twoD_scatter;第二个是更新的参数字典opts。
更新后结果如下图所示:
4、绘制线条
4.1 绘制一条直线
代码如下:
import visdom
import numpy as np
vis = visdom.Visdom(env='my_windows') # 设置环境窗口的名称,如果不设置名称就默认为main
# 绘制一条直线
x = list(range(10))
y = list(range(10))
# 使用line函数绘制直线 并选择显示坐标轴
vis.line(X=np.array(x), Y=np.array(y), opts=dict(showlegend=True))
结果如图所示:
4.2 绘制两条直线
代码如下:
# 绘制两条直线
import visdom
import numpy as np
vis = visdom.Visdom(env='my_windows')
x = list(range(10))
y = list(range(10))
z = list(range(1,11))
vis.line(X=np.array(x), Y=np.column_stack((np.array(y), np.array(z))), opts=dict(showlegend=True))
结果如图所示:
4.3 绘制正弦曲线
代码如下:
import visdom
import torch
vis = visdom.Visdom(env='sin')
x = torch.arange(0, 100, 0.1)
y = torch.sin(x)
vis.line(X=x,Y=y,win='sin(x)',opts=dict(showlegend=True))
结果如图所示:
参考文献
Pytorch深度学习入门--曾芃壹
https://www.pythonf.cn/read/3068
来源:https://blog.csdn.net/ting_qifengl/article/details/119443813


猜你喜欢
- 一.权限表mysql数据库中的3个权限表:user 、db、 host权限表的存取过程是:1)先从user表中的host、 user、 pa
- 本文实例讲述了Flask框架学习笔记之消息提示与异常处理操作。分享给大家供大家参考,具体如下:flask通过flash方法来显示提示消息:f
- 我为 Compose 写了一个波浪效果的进度加载库,API 的设计上符合 Compose 的开发规范,使用非常简便。1. 使用方式在 roo
- python 中sorted与sort有什么区别sort(cmp=None, key=None, reverse=False)sorted(
- 手机控件查看工具uiautomatorviewer工具简介用来扫描和分析Android应用程序的UI控件的工具.如何使用 1.进入
- 1.引言甘特图已经拥有 100 多年的历史,这种可视化图表对项目管理非常有用。Henry Gantt 为了分析已经完成的项目创建了甘特图,他
- 网上学习的时候总会遇到一些好的文章,分享给大家,也谢谢作者的分享。Python 简介Python 是一个高层次的结合了解释性、编译性、互动性
- 左为旧版,右为更新到1.0版本后的名字定义变量的更新tf.VARIABLES ——> tf.GLOBAL_VARIABLEStf.al
- split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串,并返回分割后的字符串列
- 当很多人发现在DW4中定义CSS很方便的时候,开始报怨FP2000不能定义CSS,甚至就此抨击FP2000如何的不好。事实上,在FP2000
- 首先,如果以前安装的话,要删除干净。我也找了
- javascript:a. 代码:/*@desc:js搜索函数,可用于关键字匹配@param key 关键字@param str 要搜索的字
- 背景一次工作中,我需要完成某个文件的字符串替换。需求是这样的:文件A有个占位符,需要利用Python3,把占位符替换成文件B的内容。文件都不
- 一 简单介绍wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。实现了微信
- 前言我们知道当文件不存在的时候,open()方法的写模式与追加模式都会新建文件,但是对文件进行判断的场景还有很多,比如,在爬虫下载图片的时候
- <script> Array.prototype.swap = function(i, j) { var temp = this
- Python作为一种功能强大的编程语言,因其简单易学而受到很多开发者的青睐。那么,Python 的应用领域有哪些呢?概括起来,Python的
- 前言声明: 以下文章所包含的结论都是基于 typeScript@4.9.4 版本所取得的。extends 是 typeScript 中的关键
- 前言cookie:在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪
- 注意:当前功能仅在windows下可使用参考链接:https://github.com/konimarti/opc命令行窗口必须在管理员权限