b站小土堆pytorch学习记录——P8-P9 Tensorboard的使用

news2025/1/25 4:28:58

文章目录

  • 一、前置知识
    • 1.Tensorboard是什么
    • 2.SummaryWriter
    • 3.add_scalar()
    • 4.add_image()
  • 二、代码
    • 1.一次函数
    • 2.蚂蚁和蜜蜂图片

一、前置知识

1.Tensorboard是什么

TensorBoard 是 TensorFlow 的可视化工具,它允许开发者可视化模型的图(graph)、指标(metrics)、参数分布等多种数据。TensorBoard 通过读取 TensorFlow 程序运行过程中输出的日志文件来工作,这些日志文件包含了关于模型训练、评估的详细信息。使用 TensorBoard,开发者可以更直观地理解、调试和优化他们的 TensorFlow 程序。

TensorBoard 的主要功能包括:
**图可视化:**展示 TensorFlow 计算图的结构,帮助开发者理解模型的构建。
**指标跟踪:**如损失和准确率等,在训练过程中动态地展示这些指标的变化,便于监控模型的训练进度。
**参数分布:**显示模型参数(如权重和偏置)随时间的变化情况,有助于分析模型的学习过程。
**嵌入向量:**可视化高维数据的低维表示,常用于理解词嵌入和其他类型的嵌入。
**图像和文本展示:**如果模型处理的是图像或文本数据,TensorBoard 可以直接在界面上展示这些数据及其对应的模型输出,方便进行结果分析。

2.SummaryWriter

在 PyTorch 中,使用 SummaryWriter 类来记录日志信息,以便通过 TensorBoard 进行可视化。
当创建一个 SummaryWriter 实例并指定一个目录(例如 “logs”)时,它会将所有的日志数据保存到这个目录下。这些数据包括训练过程中的损失、准确率、模型参数分布、图像、模型计算图等。

使用步骤:

#(1)导入必要的库
import torch
from torch.utils.tensorboard import SummaryWriter
#(2)创建实例
writer = SummaryWriter("logs")
#这行代码创建一个 SummaryWriter 对象,所有通过这个对象记录的日志都会被保存到当前工作目录下的 "logs" 文件夹中。如果 "logs" 文件夹不存在,它会被自动创建。
#(3)记录数据
#   .....
#(4)查看TensorBoard
tensorboard --logdir=logs
#(5)关闭SummaryWriter
writer.close()

3.add_scalar()

可参考博客:
add_scalar与add_image

add_scalar() 是 PyTorch TensorBoard 的 SummaryWriter 类中的一个方法,用于记录标量数据(如损失值、准确率等)随时间的变化。

函数原型:
add_scalar(tag, scalar_value, global_step=None, walltime=None)
tag (string): 数据的标识符,用于 TensorBoard 中的显示。
scalar_value (float or string/blobname): 要记录的标量值。
global_step (int, optional): 记录标量的全局步数,通常用于表示训练过程中的时间点。提供此参数可以帮助 TensorBoard 绘制标量随时间(或训练步骤)的变化图。
walltime (float, optional): 数据点的实际时间戳,默认为 time.time() 的值。通常不需要手动设置。

个人理解:
add_scalar(标签,y轴数据,x轴数据)

4.add_image()

可参考博客:
add_scalar与add_image

add_image() 是 PyTorch TensorBoard 的 SummaryWriter 类中的一个方法,用于记录和可视化图像数据。

函数原型:
add_image(tag, img_tensor, global_step=None, walltime=None, dataformats=‘CHW’)
tag (string): 图像的标识符,用于 TensorBoard 中的显示。
img_tensor (Tensor): 要记录的图像数据。这个张量应该是 3D (C x H x W) 或者 4D (N x C x H x W),其中 N 是图像数量,C 是通道数(例如,对于彩色图像通常是 3),H 是图像高度,W 是图像宽度。
global_step (int, optional): 记录图像的全局步数,通常用于表示训练过程中的时间点。
walltime (float, optional): 数据点的实际时间戳,默认为 time.time() 的值。通常不需要手动设置。
dataformats (string): 指定图像数据的维度排列方式。默认为 ‘CHW’,但也可以是 ‘NCHW’、‘NHWC’ 等。

个人理解:
add_image(标签,图像数据,第几步,图像维度排列方式)

二、代码

1.一次函数

from torch.utils.tensorboard import SummaryWriter

writer=SummaryWriter("logs")
#y=x
#for i in range(100):
    #writer.add_scalar("y=x",i,i)

#y=3x
for i in range(100):
    writer.add_scalar("y=3x",3*i,i)

writer.close()

结果:
在这里插入图片描述

2.蚂蚁和蜜蜂图片

from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np

#创建一个 SummaryWriter 对象
#所有通过这个对象记录的日志都会被保存到当前工作目录下的 "logs" 文件夹中
writer=SummaryWriter("logs")


#蚂蚁的图片,作为step1
image_path1="data/train/ants_image/0013035.jpg"
#使用Pillow打开图片
image_PIL1=Image.open(image_path1)
#将PIL图像对象转换为NumPy数组
#如果图像是彩色的,转换后的 NumPy 数组将具有三个维度(高度、宽度、颜色通道),通道顺序通常为 RGB。
#如果图像是灰度的,则数组将只有两个维度(高度、宽度)
image_array1=np.array(image_PIL1)


#蜜蜂的图片,作为step2
image_path2="data/train/bees_image/16838648_415acd9e3f.jpg"
image_PIL2=Image.open(image_path2)
image_array2=np.array(image_PIL2)


writer.add_image("test",image_array1,1,dataformats='HWC')
writer.add_image("test",image_array2,2,dataformats='HWC')

writer.close()

结果:
在这里插入图片描述在这里插入图片描述
或者也可以这么写:

from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import torch

writer = SummaryWriter("logs")

image_path1 = "data/train/ants_image/0013035.jpg"
image_PIL1 = Image.open(image_path1)
#转换为PyTorch张量并调整通道顺序
image_array1 = torch.tensor(np.array(image_PIL1)).permute(2, 0, 1)  


image_path2 = "data/train/bees_image/16838648_415acd9e3f.jpg"
image_PIL2 = Image.open(image_path2)
# 转换为PyTorch张量并调整通道顺序
image_array2 = torch.tensor(np.array(image_PIL2)).permute(2, 0, 1)  

writer.add_image("test", image_array1, 1)
writer.add_image("test", image_array2, 2)

writer.close()

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

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

相关文章

Nano 33 BLE Sense Rev2学习第二节——手机蓝牙接收数据

Nano 33 BLE Sense Rev2需要下载的程序 #include <ArduinoBLE.h> #include "Arduino_BMI270_BMM150.h"float x, y, z; int degreesX 0; int degreesY 0;BLEService ledService("19B10010-E8F2-537E-4F6C-D104768A1214"); // create service// cre…

论文阅读:Dataset Quantization

摘要 最先进的深度神经网络使用大量&#xff08;百万甚至数十亿&#xff09;数据进行训练。昂贵的计算和内存成本使得在有限的硬件资源上训练它们变得困难&#xff0c;特别是对于最近流行的大型语言模型 (LLM) 和计算机视觉模型 (CV)。因此最近流行的数据集蒸馏方法得到发展&a…

如何构建用于物体和标志检测的自定义模型

让我们快速了解一下AWS的机器学习技术栈&#xff0c;它几乎提供了解决我们业务问题所需的所有机器学习方面的支持。 物体检测是什么&#xff1f; 物体检测是从图像或视频帧中检测特定类别实例的任务。我们的目标是在图像/视频帧中找出哪里有什么物体。它是其他依赖物体的任务…

Locust中wait_time中匿名函数使用方法浅析

前言 翻出之前做个压测项&#xff0c;看到locust中对等待时间的实现方式感到好奇&#xff0c;于是总结下来。 源代码实现 def between(min_wait, max_wait):"""Returns a function that will return a random number between min_wait and max_wait.Example:…

数据库:2024/3/6

作业1&#xff1a;使用C语言完成数据库的增删改 代码&#xff1a; #include <myhead.h>//定义添加员工信息函数 int Add_worker(sqlite3 *ppDb) {//准备sql语句printf("请输入要添加的员工信息:\n");//从终端获取员工信息char rbuf[128]"";fgets(r…

centos7安装maven离线安装

1、从官方网站下载maven文件包 官方下载网站&#xff1a;https://maven.apache.org/download.cgi 2、创建文件夹解压文件 将下载好的安装包&#xff0c;放到创建的目录下&#xff0c;并解压 a、创建/app/maven文件 mkdir /app/mavenb、解压文件 tar -zxvf apache-maven-…

AIOps常见问题

AIOps的自动化通常指什么&#xff1f; AIOps 平台的自动化一般包括以下几个方面&#xff1a; 数据收集和整合&#xff1a;AIOps 平台可以从多个 IT 基础架构组件、应用需求与性能监视工具以及服务工单系统等数据源中收集并整合运维数据&#xff0c;形成一个全面的数据平台。数…

FC-AE-1553 协议

FC-AE-1553 协议 MIL-STD-1553B总线协议总线结构字格式消息传输方式 FC协议FC协议栈拓扑结构服务类型帧/序列/交换FC帧格式 FC-AE-1553网络构成帧类型命令帧状态帧数据帧 Information UnitsNC1NC2NC3-4NC5-7NT1-7 传输模式1. NC-NT2. NT-NC3. NT-NT4. 无数据字的模式命令5. 带数…

C++ spfa判断负环

给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c; 边权可能为负数。 请你判断图中是否存在负权回路。 输入格式 第一行包含整数 n 和 m 。 接下来 m 行每行包含三个整数 x,y,z &#xff0c;表示存在一条从点 x 到点 y 的有向边&#xff0c;边…

GEE 依照范围裁剪 下载Sentinel-2数据

0. GEE介绍 Google Earth Engine&#xff08;GEE&#xff09; 是由Google开发的一种云端平台&#xff0c;旨在提供强大的地理空间数据处理和分析工具。GEE集成了大量的遥感影像数据和地理空间数据集&#xff0c;以及高性能的计算资源&#xff0c;使用户能够在云端高效地进行大规…

Java基础概念 7-计算机中的数据存储

目录 Java基础概念 7-计算机中的数据存储 计算机的存储规则 进制 十进制:0123456789 二进制:01 常见的进制 不同进制在代码中的表现形式 计算机为什么用二进制存储数据? 进制之间的转换 任意进制转十进制 公式: 系数*基数的权次幂 相加 二进制转十进制** 八进制转…

UEFI Secure Boot

一、前言 在计算机世界&#xff0c;安全是一个永恒的话题。微软的Windows的安全性一直深受诟病&#xff0c;但随着操作系统层面的漏洞逐渐减少&#xff0c;黑客们盯上了BIOS固件。那如何保证从开机到进入操作系统这个过程中的安全呢&#xff1f;下图是Intel CPU的整个UEFI安全启…

Python绘图-9饼图(下)

9.6饼图添加阴影 9.6.1图像呈现 9.6.2绘图代码 # 导入相关库 import numpy as np # 导入numpy库&#xff0c;用于处理数组和数值计算 import matplotlib.pyplot as plt # 导入matplotlib的绘图模块&#xff0c;用于可视化 import matplotlib.patheffects as path_effects …

小程序管理平台:助力企业数字化转型

微信小程序生态近年来发展迅猛&#xff0c;已成为中国互联网不可忽视的力量。截至2023年6月&#xff0c;微信小程序数量已超过300万&#xff0c;同比增长25%&#xff0c;涵盖了电商、生活服务、教育、金融等众多行业。微信小程序内容生态已经日趋完善&#xff0c;并满足各领域用…

脾胃,胃肠中医笔记

目录 脾胃的功能思伤脾&#xff0c;脑力工作者过度思考会伤脾胃焦虑会导致脾胃受伤按摩肚子顺时针还是逆时针&#xff0c;顺时针促消化/逆时针促排便脾胃生病症状舌苔腹胀、滞气的原因为什么大便稀&#xff1f;湿气重的原因及解决方案自测湿气重的方法 治疗脾胃药物总结补中益气…

Java开发中遇到最难的问题,多线程面试题高并发

开篇介绍 个人背景&#xff1a; 不说太多废话&#xff0c;但起码要让你先对我有一个基本的了解。本人毕业于浙江某二本院校&#xff0c;算是科班出身&#xff0c;毕业后就进了一家外包公司做开发&#xff0c;当然不是阿里的外包&#xff0c;具体什么公司就不透露了&#xff0…

Java项目:39 springboot008房屋租赁系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 房屋租赁系统的设计基于现有的网络平台&#xff0c;主要有管理员、房东、用户三个角色 管理员可以在线查看系统已有的人中心、房屋类型管理、…

STM32FreeRTOS信号量(STM32cube高效开发)

一、信号量 &#xff08;一&#xff09;信号量概括 信号量是操作系统中重要的一部分&#xff0c;信号量是一种解决同步问题的机制&#xff0c;可以实现对共享资源的有序访问。 FreeRTOS 提供了多种信号量&#xff0c;按信号量的功能可分为二值信号量、计数型信号量、互斥信…

python文本分析与贝叶斯算法

一、python文本分析概念 文本分析中第一个概念是停用词&#xff0c;这种词有三个特点&#xff1a;&#xff08;1&#xff09;语料中大量出现&#xff1b;&#xff08;2&#xff09;没啥用&#xff1b;&#xff08;3&#xff09;留着没用。比如符号&#xff08;&#xff01;#&a…

2024年最全洗地机选购攻略盘点丨希亦、小米、云鲸、海尔洗地机哪款值得入手?

在现代家居清洁中&#xff0c;洗地机是不可或缺的得力助手&#xff0c;它融合了吸尘、拖地等多种功能。面对市场上琳琅满目的洗地机品牌和型号&#xff0c;选择一个可靠的品牌至关重要。优质的品牌能够提供高品质的产品&#xff0c;使您的清洁工作更加轻松高效。本文将向您推荐…