Pytorch学习笔记——TensorBoard的初使用

1、TensorBoard介绍

        TensorBoard是TensorFlow的可视化工具,但它也可以与PyTorch结合使用。TensorBoard提供了一个Web界面,可以展示你训练过程中的各种信息,如损失值、准确度、权重分布等,更好地帮助开发者理解和调试模型。

TensorBoard  |  TensorFlow (google.cn)icon-default.png?t=N7T8https://tensorflow.google.cn/tensorboard?hl=zh-cn

2、导入相关包

安装Tensor包

pip install tensorboard

导入TensorBoard相关包,要导入SummaryWriter模块

import torch
from torch.utils.tensorboard import SummaryWriter

3、创建SummaryWriter对象

#创建一个SummaryWriter对象,指定TensorBoard将保存数据的目录
#默认为与此.py文件的同级目录
writer = SummaryWriter("logs")

4、添加数据

添加数据的方法很多,add_scalaradd_histogramadd_image,这些方法都可以,我这里以添加一张图片为例,要用到Image模块,这个模块在PIL下面,需要进行导包操作

from PIL import Image

我们利用open函数打开图片,接收一个PIL的Image对象

#指定图片路径
image_path = "data/train/ants_image/5650366_e22b7e1065.jpg"
#生成图片对象
img_PIL = Image.open(image_path)

此时,我们并不能直接将图片传进add_image方法中,这是因为在add_image中,图片对象是以一种张量或ndarray之类的形式(张量你可以理解为向量,ndarray其实是矩阵)传入进去的,所以在这之前,需要对图片进行类别的转换:

# 转成ndarray
import numpy as np
# 格式转换
img_array = np.array(img_PIL)

图片类型转换为ndarray格式,转换前与转换后的格式如下:

就可以调用add_image这个方法,向TensorBoard中添加图片数据

writer.add_image("test",img_array,0,dataformats="HWC")

参数含义:

test: 这是这个图像数据的标签名,它将作为图像在TensorBoard界面上显示的名称。

img_array: 这是要添加到TensorBoard的图像数据。

0: 这是这个图像数据的全局步数(global step)。在训练过程中,这个步数通常对应于当前的迭代次数或epoch数。TensorBoard会使用这个步数来在Web界面上组织数据,这样你就可以看到不同步数下图像的变化情况。

dataformats="HWC": 这是一个可选参数,指定了img_array的数据格式。HWC代表"Height, Width, Channels",这是OpenCV等库常用的图像数据格式。如果你使用的是其他库(如PIL或matplotlib),可能需要使用dataformats="CHW",即"Channels, Height, Width"。确保TensorBoard能够正确地解析和显示图像。

5、关闭对象

writer.close()

6、运行

在终端输入以下命令:

tensorboard --logdir="logs"

logdir指定保存数据的目录

之后就可以打开界面查看,以Pycharm为例,运行命令后点击这里

即可看到TensorBoard面板

总体代码如下:

from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as npwriter = SummaryWriter("logs")
image_path = "data/train/ants_image/5650366_e22b7e1065.jpg"
img_PIL = Image.open(image_path)
print(type(img_PIL))
img_array = np.array(img_PIL)
print(type(img_array))writer.add_image("test",img_array,0,dataformats="HWC")
writer.close()

7、注意

若显示不出来图片,则要安装opencv库

pip install opencv-python

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

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

相关文章

huggingface里如何查看具体任务的评估指标

如果我们在做一个模型训练任务的时候,可能会不知道这个任务在评估的时候使用什么指标,那么huggingface里边为我们提供了参考: 下面就来看看吧: https://huggingface.co/https://huggingface.co/ 点击"Docs"&#xff…

【算法】【单调栈】【leetcode】1019. 链表中的下一个更大节点

刷这题之前先看: 【算法】【OD算法】【单调栈】找朋友-CSDN博客 【算法】【单调栈】【leetcode】1475. 商品折扣后的最终价格-CSDN博客 【算法】【单调栈】【leetcode】901. 股票价格跨度-CSDN博客 【算法】【单调栈】每日温度-CSDN博客 题目地址&#xff1…

嵌入式硬件中PCB走线与过孔的电流承载能力分析

简介 使用FR4敷铜板PCBA上各个器件之间的电气连接是通过其各层敷着的铜箔走线和过孔来实现的。 由于不同产品、不同模块电流大小不同,为实现各个功能,设计人员需要知道所设计的走线和过孔能否承载相应的电流,以实现产品的功能,防止过流时产品烧毁。 文中介绍设计和测试FR4敷…

iOS分享弹窗

klkxxy/分享菜单弹窗

抖音视频0粉营销推广墙纸,当日收益,第二天提现,日入300

项目简介: 这个项目非常易于执行,主要涉及在抖音平台上分享爱国主题的壁纸,并通过推广相关的小程序来实现盈利。 下 载 地 址 : laoa1.cn/1849.html 项目操作简便,一般只需花费1个小时即可完成,一旦掌…

【每日刷题】Day31

1. 2074. 反转偶数长度组的节点 - 力扣(LeetCode) //思路:双指针遍历。将链表存入数组中,通过双指针下标遍历定位需要反转的组。 typedef struct ListNode LN; void Reverse(int* arr,int left,int right)//反转函数 { while(left…

408数据结构-二叉树的概念、性质与存储结构 自学知识点整理

前置知识:树的基本概念与性质 二叉树的定义 二叉树是一种特殊的树形结构,其特点是每个结点至多只有两棵子树(即二叉树中不存在度大于 2 2 2的结点),并且二叉树是有序树,左右子树不能互换。 与树类似&#…

探索和构建 LLaMA 3 架构:深入探讨组件、编码和推理技术(三)KV缓存

探索和构建 LLaMA 3 架构:深入探讨组件、编码和推理技术(三) KV缓存 在推理的每一步中,只对模型输出的最后一个标记感兴趣,因为已经有了之前的标记。然而,模型需要访问所有先前的标记来决定输出哪个标记&…

07 - 步骤 javaScript代码

简介 JavaScript 代码是通过 JavaScript 脚本步骤来执行 JavaScript 脚本的一种方式。这允许用户在 Kettle 的数据流程中使用 JavaScript 编写自定义的脚本逻辑,用于数据处理、转换、计算等操作。 使用 场景 我需要在数据流加一个字段 createTime 当前时间&…

java学习笔记12

21. System类和Runtime类 21.1 System类 System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,直接使用System类调用即可。System类的常用方法如下标所示: 方法名称功能描述static void exit(int status)终止jvm, status!=0表示异常终止jvmstatic vo…

《有限元分析及应用》《有限元分析基础教程》-曾攀-清华大学|pdf电子书+有限元分析及应用视频教程(全85讲) 曾攀、雷丽萍 ​​​+课件PPT

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

关于开源软件的影响力的探讨

开源软件的影响力 开源软件在软件开发领域中扮演着至关重要的角色,其影响力主要体现在以下几个方面: 开放源代码促进了全球开发者之间的协作和交流: 开源软件的源代码是公开可见的,这意味着任何人都可以查看、修改和分享代码。这…

找不到msvcr110.dll的多种解决方法,轻松解决dll问题

在日常使用计算机的时候,突然提示:“由于找不到msvcr110.dll,无法继续执行代码”。这个错误通常发生在运行某些程序时,系统无法找到所需的动态链接库文件。这个问题可能会给用户带来困扰,但是不用担心,下面…

Linux下运行jar包的方式

方式一:java -jar xx.jar 这样运行 java 程序遇到的问题就是,你不能在这个窗口进行其他操作,使用 CtrlC 就可以终止程序的执行,关闭 shell 窗口也会终止程序的执行。 方式二: java -jar XXX.jar & 关闭 xshell …

Codeforces Round 943 (Div. 3)

A O ( x ) O(x) O(x) 枚举即可,我也是这么做的,但是可以利用以下的性质来 O ( 1 ) O(1) O(1) 解决问题。 首先,gcd(a, b) gcd(a-b,b), 其中 a ≥ b a\geq b a≥b 其次,gcd(x,x-1)1, 其中 x ≥ 1 x\geq 1 x≥1 利用这两个性…

Golang 设计模式(行为型)

文章目录 策略模式迭代器模式访问者模式观察者模式命令模式模板方法模式责任链模式状态模式 策略模式 策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装成独立的对象,使得它们可以互相替换。在 Go 语言中,策略…

QT:输入类控件的使用

LineEdit 录入个人信息 #include "widget.h" #include "ui_widget.h" #include <QDebug> #include <QString>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 初始化输入框ui->lineEdit…

Debian 德比安 Nginx + PHP + MySql + beanstalkd + Redis + Node.js

网卡模式选择桥接 mirrors.163.com 阿里镜像源 https://mirrors.aliyun.com/debian/ DeBian 安装软件选择时勾选上 SSH server apt update apt install sudo #安装 sudo usermod -aG sudo username #添加普通账号到 sudo 让 root 可以 SSH 配置文件 /etc/ssh/sshd_config 找…

stm32f103zet6_串口实现-DHT11-tim1(定时)

1思路 1打开时钟 1.1使用定时器实现us级的计时 1.2在打开串口 1,3在DHT11驱动中修改引脚 stm32cudeMX 配置 1打开时钟 2打开串口 3打开tim1(定时器) 4生成代码 代码设置 1导入DHT11库(tim.h是定时器的文件系统自动生成的) DHT11.c #include "dht11.h" #inc…

真香!剪映专业版VIP,解锁限制功能!

01 软件介绍 剪映专业版采用更直观更全能易用的创作面板&#xff0c;让专业剪辑变得更简单高效&#xff0c;为更多人提供畅爽的专业剪辑体验&#xff0c;让更多人享受视频创作的乐趣! 剪映专业版引入强大黑罐头素材库&#xff0c;支持搜索海量音频、表情包、贴纸、花字、特效…