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,就是四几拍中所有可能出现的节奏型,以及它们的组合方式,需要练习,可以买一本视唱书去练习,搜乐谱练习,自己写节奏型根据…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...