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

news2024/12/25 13:42:23

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 np

writer = 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.coloradmin.cn/o/1640855.html

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

相关文章

css响应式布局左、右上、右中布局

一、布局效果 二、布局代码 <div class"parent"><div class"left">菜单</div><div class"right"><div class"right-top">顶部导航</div><div class"right-content"></div>…

RAG应用全流程

RAG全流程 前提训练一个语义模型&#xff08;高精度&#xff0c;低精度&#xff09;训练一个大模型一个知识库一个精度高知识向量库&#xff08;知识分割后输入高精度语义模型得到&#xff09;一个精度低知识向量库&#xff08;知识分割后输入低精度语义模型得到&#xff09; 应…

粗俗理解多层感知器

一、前言 参考资料和图片均来自以下链接&#xff1a;https://www.youtube.com/watch?vaircAruvnKk&listPLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pihttps://www.youtube.com/watch?vbfmFfD2RIcghttps://www.youtube.com/watch?vKuXjwB4LzSAhttps://www.youtube.com/watch?vIl…

C#知识|事件集中响应,多个按钮关联同一事件(实例练习)

哈喽&#xff0c;你好&#xff0c;我是雷工&#xff01; 本节学习窗体Controls集合、控件事件的统一关联及如何优化重复代码。 01 事件集中响应 原理&#xff1a;就是相同的控件&#xff0c;可以关联同一个事件响应方法。 02 示例演示 2.1、示例功能 该示例实现窗体中选择…

433M无线射频信号控制继电器--第三天

1.先sbit&#xff08;位地址访问p1^1,p1^2,p1^3口&#xff09; 当按下A键时D0输入高电平&#xff0c;继电器IO口导通&#xff0c;则接通电源或者灯亮 当按下C键时D1口输入高电平&#xff0c;继电器IO口为高电平&#xff0c;不导通 2.433m无线模块知识 433m无线模块基础知识 -…

容斥原理以及Nim基础(异或,SG函数)

容斥原理&#xff1a; 容斥的复杂度为O&#xff08;2^m)&#xff0c;所以可以通过&#xff0c;对于实现&#xff0c;一共2^n-1种&#xff0c;我们可以用二进制来实现 下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace std; typedef long long LL; cons…

奈氏准则和香农定理

一、奈奎斯特和香农 哈里奈奎斯特&#xff08;Harry Nyquist&#xff09;(左) 克劳德艾尔伍德香农&#xff08;Claude Elwood Shannon&#xff09;(右) 我们应该在心里记住他们&#xff0c;记住所有为人类伟大事业做出贡献的人&#xff0c;因为他们我们的生活变得越来越精彩&…

数字旅游以科技创新为核心竞争力:推动旅游服务的智能化、高效化,满足游客日益增长的旅游需求

一、引言 随着科技的飞速发展&#xff0c;数字旅游作为旅游业与信息技术结合的产物&#xff0c;正以其独特的魅力改变着传统旅游业的格局。科技创新作为数字旅游的核心竞争力&#xff0c;不仅推动了旅游服务的智能化、高效化&#xff0c;更满足了游客日益增长的旅游需求。本文…

挑战一周完成Vue3项目Day5:数据大屏+菜单权限+按钮权限

一、数据大屏 国内echarts镜像站&#xff1a;ISQQW.COM x ECharts 文档&#xff08;国内同步镜像&#xff09; - 配置项 echarts图表集&#xff1a;echarts图表集 1.数据大屏适配问题解决 &#xff08;1&#xff09;vw与vh单位解决适配问题 vw/vh&#xff1a;新增单位&…

顺序循环队列--c语言实现

#include <stdio.h> #include <stdlib.h> #include <stdbool.h>#define MAX_SIZE 100 // 假设队列的最大长度为100// 队列结构体 typedef struct {int data[MAX_SIZE]; // 存储队列元素的数组int front; // 队头指针int rear; // 队尾指针 } SeqQueue;// 初…

AI学习指南-专栏前言

前言 人工智能AI作为当下最火热的技术之一&#xff0c;我们每个人似乎都被动的置身于这场科技变革中&#xff0c;AI越来越多的出现在我们的身边&#xff0c;也总能听到这样的言论&#xff0c;例如“N年后AI会取代某某行业”&#xff0c;AI出现之后&#xff0c;好像大多数人都陷…

【研发日记】Matlab/Simulink避坑指南(十一)——Delay周期Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结归纳 前言 见《研发日记&#xff0c;Matlab/Simulink避坑指南(六)——字节分割Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑指南(七)——数据溢出钳位Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑指…

图像分割模型实际分隔效果测试(Clipseg + GroundingDINO + Yoloworld)

✨背景 对于设计的工作流来说&#xff0c;智能图像分割也是一个很重要的课题&#xff0c;尤其是像照片换脸、照片高清写真等等的工作流&#xff0c;可能要多次把人物的脸部或者手部抠图出来进行合成&#xff0c;工作流如果可以直接智能分割图像并合成&#xff0c;就可以避免自…

20240503安装HEVC解码器播放H265格式的8K视频

20240503安装HEVC解码器播放H265格式的8K视频 2024/5/3 9:55 缘起&#xff1a;由于youtube支持8K视频了&#xff0c;想尝尝鲜&#xff01; 主摄像头当然是选择SONY的【夜摄/弱光场景】&#xff0c;根据优选&#xff0c;小米&#xff08;MI&#xff09;13Ultra 最佳了。 在开始播…

设计模式动态代理

什么是设计模式? 一个问题通常有n种解法&#xff0c;其中肯定有一种解法是最优的&#xff0c;这个最优的解法被人总结出来了&#xff0c;称之为设计模式。 设计模式有20多种&#xff0c;对应20多种软件开发中会遇到的问题。 关于设计模式的学习&#xff0c;主要学什么&#…

项目管理-项目范围管理2/2

项目管理&#xff1a;每天进步一点点~ 活到老&#xff0c;学到老 ヾ(◍∇◍)&#xff89;&#xff9e; 何时学习都不晚&#xff0c;加油 项目范围管理&#xff0c;过程 6个&#xff0c;包括“规收定 创确控”&#xff1a; 规划范围管理收集需求定义范围创建WBS确认范围控制…

JS 笔记9 认识JavaScript

相关内容&#xff1a;JS对象、属性、常用事件处理过程、运算符、if...else、for、…… <script type"text/javascript"></script> type属性用来指定MIME(Multipurpose Internet Mail Extension)类型&#xff0c;主要是告诉浏览器目前使用的是哪一种Scri…

先电2.4的openstack搭建

先电2.4版本的openstack&#xff0c;前期虚拟机部署参考上一篇2.2版本&#xff0c;基本步骤是一样的&#xff0c;准备两个镜像文件CentOS-7.5-x86_64-DVD-1804.iso&#xff0c;XianDian-IaaS-V2.4.iso [rootcontroller ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777…

【软件测试】软件测试基础

1. 需求1.1. 需求的概念1.2. 为什么要有需求1.3. 测试人员眼中的需求 2. 测试用例2.1. 为什么需要测试用例2.2. 什么是测试用例2.3. 一个简单的测试用例 3. 软件测试的整体流程4. bug4.1. 如何描述一个bug4.2. bug的级别4.3. bug生命周期 1. 需求 1.1. 需求的概念 简单的来说…

如何在iOS设备(iPhone,iPad等)上恢复丢失的照片

如果你像现代90%的人一样拥有智能手机&#xff0c;那么你很可能使用口袋里的微型电脑拍摄大部分&#xff08;如果不是全部&#xff09;照片&#xff0c;而不是标准的傻瓜相机或数码单反相机。 像任何数字设备一样&#xff0c;存储和保存这些照片可能是一个变化无常的过程&…