PyTorch中常用的工具(4)Visdom

news2025/2/26 3:37:27

文章目录

  • 前言
    • 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 小结

全文链接:

  1. PyTorch中常用的工具(1)数据处理
  2. PyTorch常用工具(2)预训练模型
  3. PyTorch中常用的工具(3)TensorBoard
  4. PyTorch中常用的工具(4)Visdom
  5. PyTorch中常用的工具(5)使用GPU加速:CUDA

3.2 Visdom

Visdom是Facebook专门为PyTorch开发的一款可视化工具,开源于2017年3月。Visdom十分轻量级,支持非常丰富的功能,可以胜任大多数的科学运算可视化任务,它的可视化界面如下图所示。

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 t
    import 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'

输出的结果如下图所示。

使用Visdom绘制sinx曲线

下面逐一分析这几行代码。

  • vis = visdom.Visdom(env=u'test1'),用于构建一个客户端。客户端除了指定env,还可以指定host、port等参数。

  • vis作为一个客户端对象,可以使用以下常见的画图函数。

    • line:类似MATLAB中的plot操作,用于记录某些标量的变化,如损失、准确率等。
    • image:可视化图片,可以是输入的图片,也可以是程序生成的图片,还可以是卷积核的信息。
    • text:用于记录日志等文字信息,支持HTML格式。
    • histgram:可视化分布,主要是查看数据、参数的分布。
    • scatter:绘制散点图。
    • bar:绘制柱状图。
    • pie:绘制饼状图。
    • 更多操作可以参考Visdom的GitHub主页。

本小节主要介绍深度学习中常见的line、image和text操作。

Visdom同时支持PyTorch的Tensor和NumPy的ndarray两种数据结构,但不支持Python的int、float等数据类型,因此每次传入数据时需要将数据转成ndarray或Tensor类型。上述操作的参数一般不同,但以下两个参数是绝大多数操作都具备的。

  • win:用于指定pane的名字,如果不指定,那么Visdom将自动分配一个新的pane。如果两次操作指定的win名字一样,那么新的操作会覆盖当前pane的内容,因此建议每次操作都重新指定win。

  • opts:用来可视化配置,接收一个字典,常见的option包括titlexlabelylabelwidth等,主要用于设置pane的显示格式。

在训练网络的过程中,例如损失函数值、准确率等数值不是一成不变的,为了避免覆盖之前pane的内容,需要指定参数update='append'。除了使用update参数,还可以使用vis.updateTrace方法更新图。updateTrace不仅能在指定pane上新增一个和已有数据相互独立的trace,还能像update='append'那样在同一条trace上追加数据,下面举例说明:

In: # append 追加数据
    for ii in range(0, 10):
        # y = x
        x = t.Tensor([ii])
        y = x
        vis.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) / 9
    vis.line(X=x, Y=y, win='polynomial', name='this is a new Trace', update='new')
Out: 'polynomial'

打开浏览器,输入http://localhost:8097,可以看到如图下图所示的结果。

append和updateTrace可视化效果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可以实现类似torchvisionmake_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的可视化输出如下图所示。

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'

text可视化输出

本小节主要介绍了深度学习中两种常见的可视化工具:TensorBoard和Visdom。合理地利用可视化工具便于记录与观察神经网络的中间层与网络整体的训练效果,从而帮助用户更好地对网络进行调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1347457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

修改jenkins的目录(JENKINS_HOME)

默认JENKINS_HOME是/var/lib/jenkins/ 现要修改为/home/jenkins_data/jenkins 最开始 sudo cp -a /var/lib/jenkins/ /home/jenkins_data/ 然后如下操作&#xff1a; 1、首先 /etc/sysconfig/jenkins&#xff1a;jenkins配置文件&#xff0c;“端口”&#xff0c;“JENKIN…

使用opencv+tesseract识别图片中的表格

描述 在java环境中使用opencv和tesserac识别一个图片表格 环境&#xff1a;opencv和tesseract安装在linux环境下&#xff0c;docker将运行springboot服务 opencv和tesseract的安装和docker加载可参考之前的文章 过程 将图片进行预处理&#xff0c;过滤掉颜色等干扰元素 提…

2023 年四川省职业院校技能大赛“信息安全管理与评估”样题

2023 年四川省职业院校技能大赛&#xff08;高等职业教育&#xff09; “信息安全管理与评估”样题 竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 第一阶段&#xff1a;模块一 网络平台搭建与设…

Windows系统历史版本简介详细版

学习目标&#xff1a; 目录 学习目标&#xff1a; 学习内容&#xff1a; 学习产出&#xff1a; Windows 11的全新用户界面设计&#xff1a;学习新的任务栏、开始菜单、窗口管理等界面元素的使用与操作。 Windows 11的新功能和特点&#xff1a;学习新的虚拟桌面、Microsoft Team…

【MMdetection】MMdetection从入门到进阶

基础环境安装 步骤 0. 从官方网站下载并安装 Miniconda。 步骤 1. 创建并激活一个 conda 环境。 conda create --name openmmlab python3.8 -y conda activate openmmlab步骤 2. 基于 PyTorch 官方说明安装 PyTorch。 pip install torch2.0.1 torchvision0.15.2 torchaudio…

前端--基础 目录文件夹和根目录 VScode打开目录文件夹

目录 目录文件夹和根目录 &#xff1a; 目录文件夹 &#xff1a; 根目录 &#xff1a; VScode 打开目录文件夹 &#xff1a; VScode 打开文件夹 &#xff1a; 拖拽目录文件夹 &#xff1a; 目录文件夹和根目录 &#xff1a; 我们都清楚&#xff0c;在实际的工作中会…

[python]python使用M-LSD直线检测算法onnx部署模型实时检测

介绍 github地址&#xff1a;https://github.com/navervision/mlsd LSD (M-LSD)一种用于资源受限环境的实时轻量线段检测器。它利用了极其高效的 LSD 架构和新颖的训练方案&#xff0c;包括 SoL 增强和几何学习方案。模型可以在GPU、CPU甚至移动设备上实时运行。算法已开源&a…

ChatGPT 对SEO的影响

ChatGPT 的兴起是否预示着 SEO 的终结&#xff1f; 一点也不。事实上&#xff0c;如果使用得当&#xff0c;它可以让你的 SEO 工作变得更加容易。 强调“正确使用时”。 你可以使用ChatGPT来帮助进行关键字研究的头脑风暴部分、重新措辞你的内容、生成架构标记等等。 但你不…

LeetCode每日一题.02(螺旋矩阵||)

螺旋矩阵&#xff1a; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]] 示例 2&#xff1a; 输入…

HarmonyOS应用程序包快速修复

快速修复概述 快速修复是HarmonyOS系统提供给开发者的一种技术手段&#xff0c;支持开发者以远快于应用升级的方式对应用程序包进行缺陷修复。和全量应用升级软件版本相比&#xff0c;快速修复的主要优势在小、快和用户体验好。在较短的时间内不中断正在运行的应用的情况下&am…

<Icon-ResizER>support

If you get any questions in using app, email me caohechunhotmail.com.

【leetcode100-025】【链表/快慢指针】环形链表

【题干】 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&a…

AI电商时代开始:阿里能否反杀拼多多

“AI电商时代刚刚开始&#xff0c;对谁都是机会&#xff0c;也是挑战。” 针对阿里员工对于拼多多财报和电商等的讨论&#xff0c;马云在阿里内网罕见地参与了谈论并发言。 阿里巴巴一向雷厉风行&#xff0c;已打响了AI电商的“第一炮”。 根据《晚点LatePost》报道&#xff…

C Primer Plus 第6版 编程练习 chapter 12

文章目录 1. 第1题1.1 题目描述1.2 编程源码1.3 结果显示 2. 第2题2.1 题目描述2.2 编程源码2.2.1 pe12-2a.h源码2.2.2 pe12-2a.c源码2.2.3 pe12-2b.c源码 2.3 结果显示 3. 第3题3.1 题目描述3.2 编程源码3.2.1 pe12-2a.h源码3.2.2 pe12-2a.c源码3.2.3 pe12-2b.c源码 3.3 结果显…

2024年【安全员-B证】考试报名及安全员-B证新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-B证考试报名考前必练&#xff01;安全生产模拟考试一点通每个月更新安全员-B证新版试题题目及答案&#xff01;多做几遍&#xff0c;其实通过安全员-B证考试试题很简单。 1、【多选题】《中华人民共和国消防法…

液晶时钟设计

#include<reg51.h> //包含单片机寄存器的头文件 #include<stdlib.h> //包含随机函数rand()的定义文件 #include<intrins.h> //包含_nop_()函数定义的头文件 sbit RSP2^0; //寄存器选择位&#xff0c;将RS位定义为P2.0引脚 sbit RWP2^1; //读写选…

《Python机器学习原理与算法实现》学习笔记

以下为《Python机器学习原理与算法实现》&#xff08;杨维忠 张甜 著 2023年2月新书 清华大学出版社&#xff09;的学习笔记。 根据输入数据是否具有“响应变量”信息&#xff0c;机器学习被分为“监督式学习”和“非监督式学习”。 “监督式学习”即输入数据中即有X变量&…

如何通过易舟云财务软件,查看账簿的总账?

如何通过易舟云财务软件&#xff0c;查看账簿的总账&#xff1f; 前言财务软件操作步骤 前言 总账是会计中的一个重要概念&#xff0c;是指记录一个企业在一定时期内所有经济业务活动的账簿。总账记录了企业的资产、负债、所有者权益、收入和费用等各项会计科目的变动情况。 …

详解数组的轮转

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

软件测试/测试开发丨Python 常用第三方库 yaml

YAML 一种数据序列化格式用于人类的可读性和与脚本语言的交互一种被认为可以超越 XML、JSON 的配置文件 YAML 基本语法规则 大小写敏感使用缩进表示层级关系缩进时不允许使用 Tab 键&#xff0c;只允许使用空格缩进的空格数目不重要&#xff0c;只要相同层级的元素左侧对齐即…