PyTorch中常用的工具(4)Visdom
文章目录
- 前言
- 3.2 Visdom
前言
在训练神经网络的过程中需要用到很多的工具,最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块,合理使用这些工具可以极大地提高编程效率。
由于内容较多,本文分成了五篇文章(1)数据处理(2)预训练模型(3)TensorBoard(4)Visdom(5)CUDA与小结。
整体结构如下:
- 1 数据处理
- 1.1 Dataset
- 1.2 DataLoader
- 2 预训练模型
- 3 可视化工具
- 3.1 TensorBoard
- 3.2 Visdom
- 4 使用GPU加速:CUDA
- 5 小结
全文链接:
- PyTorch中常用的工具(1)数据处理
- PyTorch常用工具(2)预训练模型
- PyTorch中常用的工具(3)TensorBoard
- PyTorch中常用的工具(4)Visdom
- PyTorch中常用的工具(5)使用GPU加速:CUDA
3.2 Visdom
Visdom是Facebook专门为PyTorch开发的一款可视化工具,开源于2017年3月。Visdom十分轻量级,支持非常丰富的功能,可以胜任大多数的科学运算可视化任务,它的可视化界面如下图所示。
Visdom可以创造、组织和共享多种数据的可视化,包括数值、图像、文本,甚至是视频,同时支持PyTorch、Torch以及NumPy。用户可以通过编程组织可视化空间,或者通过用户接口为数据打造仪表板,以此检查实验结果或调试代码。
Visdom中有以下两个重要概念。
-
env:环境。不同环境的可视化结果相互隔离,互不影响,在使用时如果不指定env,则默认使用
main
。不同用户、不同程序一般使用不同的env。 -
pane:窗格。窗格用于可视化图像、数值或打印文本等,它可以拖动、缩放、保存和关闭。一个程序可以使用同一个env中的不同pane,每个pane可视化或记录不同信息。
通过命令pip install visdom
即可完成Visdom的安装,安装完成后,通过python -m visdom.server
命令启动Visdom服务,或者通过nohup python -m visdom.server &
命令将服务放至后台运行。Visdom服务是一个Web Server服务,默认绑定8097端口,客户端与服务器间通过tornado进行非阻塞交互。
使用Visdom时需要注意以下两点。
-
需要手动指定保存env,可在web界面点击save按钮或在程序中调用save方法,否则Visdom服务重启后,env等信息会丢失。
-
客户端与服务器之间的交互采用tornado异步框架,可视化操作不会阻塞当前程序,网络异常也不会导致程序退出。
Visdom以Plotly为基础,它支持丰富的可视化操作,下面举例说明一些最常用的操作:
%%sh
# 启动visdom服务器
nohup python -m visdom.server &
In: import torch as timport visdom# 新建一个连接客户端# 指定env = u'test1',默认端口为8097,host是‘localhost'vis = visdom.Visdom(env=u'test1', use_incoming_socket=False)x = t.arange(0, 30, 0.01)y = t.sin(x)vis.line(X=x, Y=y, win='sinx', opts={'title': 'y=sin(x)'})
Out: 'sinx'
输出的结果如下图所示。
下面逐一分析这几行代码。
-
vis = visdom.Visdom(env=u'test1')
,用于构建一个客户端。客户端除了指定env,还可以指定host、port等参数。 -
vis作为一个客户端对象,可以使用以下常见的画图函数。
- line:类似MATLAB中的
plot
操作,用于记录某些标量的变化,如损失、准确率等。 - image:可视化图片,可以是输入的图片,也可以是程序生成的图片,还可以是卷积核的信息。
- text:用于记录日志等文字信息,支持HTML格式。
- histgram:可视化分布,主要是查看数据、参数的分布。
- scatter:绘制散点图。
- bar:绘制柱状图。
- pie:绘制饼状图。
- 更多操作可以参考Visdom的GitHub主页。
- line:类似MATLAB中的
本小节主要介绍深度学习中常见的line、image和text操作。
Visdom同时支持PyTorch的Tensor和NumPy的ndarray两种数据结构,但不支持Python的int、float等数据类型,因此每次传入数据时需要将数据转成ndarray或Tensor类型。上述操作的参数一般不同,但以下两个参数是绝大多数操作都具备的。
-
win:用于指定pane的名字,如果不指定,那么Visdom将自动分配一个新的pane。如果两次操作指定的win名字一样,那么新的操作会覆盖当前pane的内容,因此建议每次操作都重新指定win。
-
opts:用来可视化配置,接收一个字典,常见的option包括
title
、xlabel
、ylabel
、width
等,主要用于设置pane的显示格式。
在训练网络的过程中,例如损失函数值、准确率等数值不是一成不变的,为了避免覆盖之前pane的内容,需要指定参数update='append'
。除了使用update参数,还可以使用vis.updateTrace
方法更新图。updateTrace
不仅能在指定pane上新增一个和已有数据相互独立的trace,还能像update='append'
那样在同一条trace上追加数据,下面举例说明:
In: # append 追加数据for ii in range(0, 10):# y = xx = t.Tensor([ii])y = xvis.line(X=x, Y=y, win='polynomial', update='append' if ii > 0 else None)# updateTrace 新增一条线x = t.arange(0, 9, 0.1)y = (x ** 2) / 9vis.line(X=x, Y=y, win='polynomial', name='this is a new Trace', update='new')
Out: 'polynomial'
打开浏览器,输入http://localhost:8097
,可以看到如图下图所示的结果。
append和updateTrace可视化效果
image的画图功能可以分为以下两类。
image
接收一个二维或三维向量,形状为 H × W H\times W H×W(黑白图像)或 3 × H × W 3 \times H\times W 3×H×W(彩色图像)。images
接收一个四维向量,形状为 N × C × H × W N\times C\times H\times W N×C×H×W,其中 C C C可以是1或3,分别代表黑白和彩色图像。images
可以实现类似torchvision
中make_grid
的功能,将多张图片拼接在一起。images
也可以接收一个二维或三维的向量,此时它所实现的功能与image
一致。
In: # 可视化一个随机的黑白图片vis.image(t.randn(64, 64).numpy())# 可视化一张随机的彩色图片vis.image(t.randn(3, 64, 64).numpy(), win='random2')# 可视化36张随机的彩色图片,每一行6张vis.images(t.randn(36, 3, 64, 64).numpy(), nrow=6, win='random3', opts={'title':'random_imgs'})
Out: 'random3'
images的可视化输出如下图所示。
vis.text
用于可视化文本,它支持所有的HTML标签,同时也遵循着HTML的语法标准。例如,换行需使用<br>
标签,而\r\n
无法实现换行,下面举例说明:
In: vis.text(u'''<h1>Validation</h1><br>2021-04-18 20:09:00,399 - mmdet - INFO - Epoch(val) [21][160] <br>bbox_mAP: 0.8180, bbox_mAP_50: 0.9880, bbox_mAP_75: 0.9440, bbox_mAP_s: 0.1510, <br>bbox_mAP_m: 0.8390, bbox_mAP_l: 0.8040, bbox_mAP_copypaste: 0.818 0.988 0.944 0.151 0.839 0.804,<br>segm_mAP: 0.8180, segm_mAP_50: 0.9880, segm_mAP_75: 0.9570, segm_mAP_s: 0.2000, segm_mAP_m: 0.8250,<br>segm_mAP_l: 0.8120, segm_mAP_copypaste: 0.818 0.988 0.957 0.200 0.825 0.812''',win='visdom',opts={'title': u'validation' })
Out: 'visdom'
本小节主要介绍了深度学习中两种常见的可视化工具:TensorBoard和Visdom。合理地利用可视化工具便于记录与观察神经网络的中间层与网络整体的训练效果,从而帮助用户更好地对网络进行调整。
相关文章:

PyTorch中常用的工具(4)Visdom
文章目录 前言3.2 Visdom 前言 在训练神经网络的过程中需要用到很多的工具,最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块,合理使用这些工具可以极大地提高编程效率。 由于内容较多,本文分成了五篇文…...

Linux(ubuntu)下git / github/gitee使用
先附上git命令 linuxchenxiao:~$ cd Templates/ 先进入一个目录,也可mkdir新建一个目录:用于接下来初始化为git可以管理的仓库 这个目录就是所说的工作目录,指当前正在进行开发的项目的本地目录。 linuxchenxiao:~/Templates$ git init 已…...

回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 (多指标,多图)
回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 (多指标,多图) 目录 回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 (多指标&a…...

2023年工作初体验
23年终于正式入职,参与了正式上线的电商平台、crm平台等项目的研发,公司规模较小,气氛融洽,没有任何勾心斗角、末位淘汰,几乎没什么压力。虽然是我的第一家公司,但实际是个适合养老的公司(笑 总…...

PostgreSQL 作为向量数据库:入门和扩展
PostgreSQL 拥有丰富的扩展和解决方案生态系统,使我们能够将该数据库用于通用人工智能应用程序。本指南将引导您完成使用 PostgreSQL 作为向量数据库构建生成式 AI 应用程序所需的步骤。 我们将从pgvector 扩展开始,它使 Postgres 具有特定于向量数据库…...

亚信安慧AntDB数据库:企业核心业务系统数据库升级改造的可靠之选
在近期召开的“2023年国有企业应用场景发布会”上,亚信安慧公司的核心数据库产品AntDB闪耀登场,技术总监北陌先生针对企业核心业务系统数据库升级改造的关键议题发表了深度分享。他从研发、工程实施和运维管理三个维度细致剖析了当前企业在进行数据库升级…...

CommonJS 和 ES6 Module:一场模块规范的对决(上)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...

python快速实现简易电子音乐盒(电子钢琴)
首先第一步附上完整源码(基于pygame库) import pygame# 初始化pygame pygame.init()# 设置窗口大小 window_size (800, 600) screen pygame.display.set_mode(window_size)# 加载音频文件 C4 pygame.mixer.Sound("test1/C4.wav") D4 pyga…...

详解bookkeeper AutoRecovery机制
引言小故事 张三在一家小型互联网公司上班,由于公司实行的996,因此经常有同事“不辞而别”,为了工作的正常推进,团队内达成了某种默契,这种默契就是通过某个规则来选出一个同事,这个同事除了工作之余还有额…...
使用 Ubuntu 20.04 进行初始服务器设置
前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 使用 Ubuntu 20.04 进行初始服务器设置 介绍 首次创建新的 Ubuntu 20.04 服务器时,应该执行一些重…...
【SpringCloud】6、Spring Cloud Gateway路由配置
在 Spring Cloud Gateway 中配置 uri 有三种方式,包括: 1、WebSocket路由 spring:cloud:gateway:routes:- id: bt-apiuri: ws://localhost:9090/predicates:...

pdf转换成word怎么转?一篇文章教你轻松搞定
pdf转换成word怎么转?你是否曾经遇到过需要将PDF文件转换成Word格式的情况?比如,你需要编辑一个文档,或者想将一些电子书或报告复制到Word中以便于编辑或重新排版。在这种情况下,如何将PDF文件转换成Word格式呢&#x…...

【中南林业科技大学】计算机组成原理复习包括题目讲解(超详细)
来都来了点个赞收藏关注一下再走呗🌹🌹🌹🌹 第1章:绪论 1.冯诺依曼机特点,与现代计算机的区别 冯诺依曼计算机的基本思想是:程序和数据以二进制形式表示,存储程序控制。在计算机中&…...

恭喜 Databend 上榜 2023 开源创新榜「优秀开源项目 」
近日,国家科技传播中心见证了一场开源界的重要事件:由中国科协科学技术传播中心、中国计算机学会、中国通信学会和中国科学院软件研究所联合主办,CSDN 承办的 2023 年开源创新榜专家评审会圆满落幕。由王怀民院士担任评委会主任,评…...

网络连通性批量检测工具
一、背景介绍 企业网络安全防护中,都会要求配置物理网络防火墙以及主机防火墙,加强对网络安全的防护。云改数转之际,多系统上云过程中都会申请开通大量各类网络配置,针对这些复杂且庞大的网络策略开通配置,那么在网络配…...

2023高级人工智能期末总结
1、人工智能概念的一般描述 人工智能是那些与人的思维相关的活动,诸如决策、问题求解和学习等的自动化; 人工智能是一种计算机能够思维,使机器具有智力的激动人心的新尝试; 人工智能是研究如何让计算机做现阶段只有人才能做得好的…...
Oracle数据库迁移所有文件到新挂载磁盘路径
主要步骤: 1、停掉服务, 2、关闭数据库shutdown immediate 3、移动数据文件到新的位置。 4、启动到mount状态,如果也移动了ctl,需要启动到nomount下,生成参数文件。 5、alter database rename 文件名 to 新位置&a…...

基于YOLOv7算法的高精度实时安全背心目标检测识别系统(PyTorch+Pyside6+YOLOv7)
摘要:基于YOLOv7算法的高精度实时安全背心目标检测系统可用于日常生活中检测与定位安全背心,此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别,同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算法来训…...

Mac——VsCode使用格式化工具进行整理和格式化
1. 打开VSCode编辑器。 2. 点击左下角⚙️图标,打开设置 3. 进入设置后,你会看到一个搜索框,在搜索框中输入 format on save 来查找相关设置项。 4. 在设置列表中找到 Editor: Format On Save 选项,勾选它以启用在保存文件时自动格…...

73.乐理基础-打拍子-还原号、临时变音记号在简谱中的规则
上一个内容:72.乐理基础-打拍子-加延音线的节奏型-CSDN博客 下图中1-13,就是四几拍中所有可能出现的节奏型,以及它们的组合方式,需要练习,可以买一本视唱书去练习,搜乐谱练习,自己写节奏型根据…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...