PyTorch中常用的工具(3)TensorBoard

文章目录

  • 前言
  • 3 可视化工具
    • 3.1 TensorBoard

前言

在训练神经网络的过程中需要用到很多的工具,最重要的是数据处理、可视化和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 可视化工具

在训练神经网络时,通常希望能够更加直观地了解训练情况,例如损失函数曲线、输入图片、输出图片等信息。这些信息可以帮助读者更好地监督网络的训练过程,并为参数优化提供方向和依据。最简单的办法就是打印输出,这种方式只能打印数值信息,不够直观,同时无法查看分布、图片、声音等。本节介绍两个深度学习中常用的可视化工具:TensorBoard和Visdom。

3.1 TensorBoard

最初,TensorBoard是作为TensorFlow的可视化工具迅速流行开来的。作为和TensorFlow深度集成的工具,TensorBoard能够展示TensorFlow的网络计算图,绘制图像生成的定量指标图以及附加数据。同时,TensorBoard是一个相对独立的工具,只要用户保存的数据遵循相应的格式,TensorBoard就能读取这些数据,进行可视化。

在PyTorch 1.1.0版本之后,PyTorch已经内置了TensorBoard的相关接口,用户在手动安装TensorBoard后便可调用相关接口进行数据的可视化,TensorBoard的主界面如下图所示。

![使用add_scalar记录标量]](https://img-blog.csdnimg.cn/direct/864745746f6244e080a0793ae578e5a1.png#pic_center)

TensorBoard的使用非常简单,首先使用以下命令安装TensorBoard:

pip install tensorboard

待安装完成后,通过以下命令启动TensorBoard,其中path为log文件的保存路径:

tensorboard --logdir=path

TensorBoard的常见操作包括记录标量、显示图像、显示直方图、显示网络结构、可视化embedding等,下面逐一举例说明:

In: import torchimport torch.nn as nnimport numpy as npfrom torchvision import modelsfrom torch.utils.tensorboard import SummaryWriterfrom torchvision import datasets,transformsfrom torch.utils.data import DataLoader# 构建logger对象,log_dir用来指定log文件的保存路径logger = SummaryWriter(log_dir='runs')
In: # 使用add_scalar记录标量for n_iter in range(100):logger.add_scalar('Loss/train', np.random.random(), n_iter)logger.add_scalar('Loss/test', np.random.random(), n_iter)logger.add_scalar('Acc/train', np.random.random(), n_iter)logger.add_scalar('Acc/test', np.random.random(), n_iter)

使用add_image显示图像

In: transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,),(0.5,))])dataset = datasets.MNIST('data/', download=True, train=False, transform=transform)dataloader = DataLoader(dataset, shuffle=True, batch_size=16)images, labels = next(iter(dataloader))grid = torchvision.utils.make_grid(images)
In: # 使用add_image显示图像logger.add_image('images', grid, 0)

使用add_graph可视化网络

In: # 使用add_graph可视化网络class ToyModel(nn.Module):def __init__(self, input_size=28, hidden_size=500, num_classes=10):super().__init__()self.fc1 = nn.Linear(input_size, hidden_size) self.relu = nn.ReLU()self.fc2 = nn.Linear(hidden_size, num_classes)  def forward(self, x):out = self.fc1(x)out = self.relu(out)out = self.fc2(out)return outmodel = ToyModel()logger.add_graph(model, images)

使用add_histogram显示直方图

In: # 使用add_histogram显示直方图logger.add_histogram('normal', np.random.normal(0,5,1000), global_step=1)logger.add_histogram('normal', np.random.normal(1,2,1000), global_step=10)

使用add_embedding可视化embedding

In: # 使用add_embedding进行embedding可视化dataset = datasets.MNIST('data/', download=True, train=False)images = dataset.data[:100].float()label = dataset.targets[:100]features = images.view(100, 784)logger.add_embedding(features, metadata=label, label_img=images.unsqueeze(1))

打开浏览器输入http://localhost:6006(其中,6006应改成读者TensorBoard所绑定的端口),就可以看到本文之前的可视化结果。

TensorBoard十分容易上手,读者可以根据个人需求灵活地使用上述函数进行可视化。本节介绍了TensorBoard的常见操作,更多详细内容读者可参考官方相关源码。

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

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

相关文章

【解决】电脑上的WIFI图标不见了咋整?

相信不少同学都遇到过这种情况:电脑上的wifi图标莫名不见了,甚至有时候还是在使用的中途突然断网消失的。 遇到这种情况一般有两种解决方案: 1. 在开机状态下长按电源键30秒以上 这种办法应该是给主板放电,一般应用在wifi6上面。…

计算机视觉与自然语言处理(Open AI)

1.语音识别技术 语音识别是将语音转换为文本的技术, 是自然语言处理的一个分支。通过特征的提取、模式的匹配将语音信号变为文本或命令,以实现机器识别和理解语音。 按照应用场景的不同,可以大致分为三类; • 电信级系统应用&…

树莓派(linux)使用Motion动作捕捉或实时获取视频

测试摄像头 查看系统是否识别了摄像头 $ lsusb 测试摄像头抓图(拍照) 安装 fswebcam sudo apt-get install fswebcam 抓拍一张图,存放与当前目录,并保存为 jpg 格式。 fswebcam /dev/video0 ./img1.jpg 查看摄像头效果 安装 luvcview …

Web前端第9章思维导图

本章内容是关于CSS样式属性,包含CSS单位、CSS字体样式、CSS文本样式、CSS颜色与背景、CSS列表样式、CSS盒模型。重点在于CSS盒模型、CSS文本样式、CSS字体样式。 1. CSS单位 绝对单位 磅(pt),pica(pc)、c…

自动医疗检查仓:未来医疗的新篇章

自动医疗检查仓:未来医疗的新篇章 随着科技的飞速发展,医疗行业正经历着前所未有的变革。其中,自动医疗检查仓作为近年来备受瞩目的创新技术,正在逐渐改变我们对医疗服务的认知和体验。本文将对自动医疗检查仓进行深入剖析,从其技术原理、应用场景到未来发展趋势等方面展…

深度学习核心技术与实践之自然语言处理篇

非书中全部内容,只是写了些自认为有收获的部分。 自然语言处理简介 NLP的难点 (1)语言有很多复杂的情况,比如歧义、省略、指代、重复、更正、倒序、反语等 (2)歧义至少有如下几种: …

十大排序总结之——冒泡排序、插入排序

同样,这两几乎也是被淘汰了的算法,尽管它们是稳定的,但是时间复杂度没人喜欢,了解一下就好,没啥好说的,注意最后一句话就行了 一,冒泡排序 1. 算法步骤 共n-1趟,谁两敢冒泡就换了…

十四:爬虫-Redis基础

1、背景 随着互联网大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量。这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力,来解决系统性能上的瓶颈。 2、redis是什么 Redis 全称 Remote Dictio…

HarmonyOS4.0系统性深入开发10卡片事件能力说明

卡片事件能力说明 ArkTS卡片中提供了postCardAction()接口用于卡片内部和提供方应用间的交互,当前支持router、message和call三种类型的事件,仅在卡片中可以调用。 接口定义:postCardAction(component: Object, action: Object): void 接口…

建模杂谈系列236 Block Manager

说明 很久没有写了,总是写一半就没空往下写。这次正好有个单独的主题,可以写一下。 内容 1 块的分配 数据应该怎么切分和管理?这没有一个固定的答案,在我的实践中,我觉得一个块(Block)一万条记录是比较合理的。然后…

Android App从备案到上架全过程

不知道大家注意没有,最近几年来,新的移动App想要上架是会非常困难的,并且对于个人开发者和小企业几乎是难如登天,各种备案和审核。但是到底有多难,或许只有上架过的才会有所体会。 首先是目前各大应用市场陆续推出新的声明,各种备案截止日期到12月就要到最后期限责令整改…

shell case判断的实际应用

简介 case语句是一种多路分支结构,用于根据变量的值来判断执行不同的命令。作用与 if 有着异曲同工之妙,在某些地方比 if 可能更加好用,这里就介绍一些 case 的用法与实践,if 的详细方法见另一篇文章:shell if判断的应…

我的机器学习起步如何Getting Started

学习技巧和原则 先通过经典书籍进行科普知名机器学习网站根据书籍或网站的目录,先泛读、再选择有兴趣的部分重点精读、后至于反复读知行合一 起步Getting Started 周志华版《机器学习》,又名西瓜书 可以作为科普书籍,需要主动略过对于理论…

27、web攻防——通用漏洞SQL注入Tamper脚本Base64Jsonmd5

文章目录 数字型:0-9。http;//localhost:8081/blog/news.php?id1 字符型:a-z、中文,需要闭合符号。http;//localhost:8081/blog/news.php?idsimple 搜索型:在字符型的基础上加入了通配符%。http;//localhost:8081/blog/news.…

问界M9激光雷达解说

什么是激光雷达 激光雷达(英文:Lidar),是一种通过发射激光束来测量目标位置、速度等特征量的雷达系统。其工作原理是将激光光束照射到目标物体上,然后通过测量激光光束从发射到反射回来的时间,来计算目标物体的距离、位置、速度等参数。激光雷达通常用于测量地形、地貌、…

js常用事件演示

为什么要使用js事件: JavaScript事件是非常重要的,因为它们提供了与用户交互和处理用户操作的能力。以下是一些使用JavaScript事件的原因: 交互性:使用JavaScript事件可以实现各种交互功能,例如点击按钮、移动鼠标、按…

考研用什么光源比较好?五款好用台灯推荐

人眼对光是非常敏感的,特别是儿童青少年眼睛还在发育的状态来说,光线是至关重要的,于是这次测评就不能马虎,必须要本着专业严谨的态度进行测评,这次测评呢就花了不少钱买下了现在市面上热度很高、或是较有名气的专业款…

LeetCode刷题--- 第 N 个泰波那契数

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述动…

算法通关村第二十关-黄金挑战图的常见算法

大家好我是苏麟 , 今天聊聊图的常见算法 . 图里的算法是很多的,这里我们介绍一些常见的图算法。这些算法一般都比较复杂,我们这里介绍这些算法的基本含义,适合面试的时候装*,如果手写,那就不用啦。 图分析算法&#xf…

【软件体系结构】软件体系结构风格

5.1 软件体系结构风格概述 多年来,人们在开发某些类型软件过程中积累起来的组织规则和结构,形成了软件体系结构风格。 软件体系结构风格,是总结人们设计经验而形成结构较为巩固、组织较为统一的形式,是一种适合于多种场合的相似…