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

文章目录

  • 一、前置知识
    • 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 SummaryWriterwriter=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 torchwriter = 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://xiahunao.cn/news/2821910.html

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

相关文章

栈(顺序栈)实现Language C

###王道考研的学习领悟,个人喜好讲解清晰 何为栈? 定义:栈(stack)是只允许在一端进行插入或删除的线性表。 其重要术语:栈顶,栈底,空栈。 我们只需要把这个图看明白了,理解起来就…

electron+vue3全家桶+vite项目搭建【28】封装窗口工具类【2】窗口组,维护窗口关系

文章目录 引入实现效果思路主进程模块渲染进程模块测试效果 引入 demo项目地址 窗口工具类系列文章: 封装窗口工具类【1】雏形 我们思考一下窗口间的关系,窗口创建和销毁的一些动作,例如父子窗口,窗口组合等等,还有…

Prometheus(二):NodeExporter和Grafana的安装和使用

目录 1 Node Exporter安装1.1 简介1.2 安装1.3 Prometheus收集node_exporter数据 2 安装Grafana2.1 安装2.2 使用1、创建数据源2、选择模板3、模板导入 2.3 grafana创建用户1、创建用户2、验证 总结 1 Node Exporter安装 1.1 简介 node exporter是Prometheus的收集数据的组件…

GCN 翻译 - 1

ABSTRACT 我们提出了一种可扩展的在以图结构为基础的数据上的半监督学习,这种方法直接作用在图数据上,可以看做是卷积神经网络的变种。我们选择了图谱理论里面的一阶近似作为我们的卷积结构。我们的模型能够随着图的规模线性伸缩,并且隐藏层…

【计算机网络】五种IO模型与IO多路转接之select

文章目录 一、五种IO模型二、非阻塞IO1.fcntl2.实现函数SetNoBlock3.轮询方式读取标准输入 三、I/O多路转接之select1.初识select2.select函数原型3.socket就绪条件4.select的特点5.select缺点6.select使用案例--只读取数据的server服务器1.err.hpp2.log.hpp3.sock.hpp4.select…

面试题JS篇

目录 Js 基本数据类型有哪些Ajax 如何使用如何判断一个数据是 NaN?Js 中 null 与 undefined 区别闭包是什么?有什么特性?对页面会有什么影响JS中模块化的方法Js 中常见的内存泄漏什么是事件冒泡?如何阻止事件冒泡?事件…

windows server mysql 数据库停止 备份 恢复全流程操作方法

一,mysql备份 mysql最好是原工程文件备份.不需要sql查询的方式备份.安全高效. 比如,安装php与mysql组合后,我的mysql文件保存在: D:\phpstudy_pro\Extensions\MySQL5.7.26\data\dux 我只需要复制一份,保存起来就行. 二,mysql恢复 怎么恢复呢.我们一般是只恢复其中一个表,则找…

初学者如何使用QT新建一个包含UI界面的C++项目

文章目录 一、下载并安装QT51、下载安装包2、注册/登录账号3、安装qt6 二、新建QT Widget项目1、新建项目并且运行2、易错点:可能运行成功得到UI界面但是会报错(原因是使用了中文路径) 一、下载并安装QT5 1、下载安装包 进入下载网址 Windo…

MES系统在离散制造企业中的功能解析

随着信息技术的快速发展和制造业的转型升级,MES在离散制造企业中的作用日益凸显。MES系统不仅提高了生产效率和产品质量,还优化了资源配置,增强了企业的市场竞争力。 一、生产管理功能 MES系统能够实时监控生产现场的各种数据,包…

java小记(2)

IS-A:类的父子继承关系。 default:关键字,与Java中的public,private等关键字一样,都属于修饰符关键字,可以用来修饰属性、方法以及类,但是default一般用来修饰接口中的方法。 接口与抽象类的区…

WSL2部署RV1126 SDK编译环境

1 下载RV1126 SDK 在 Firefly | 让科技更简单,让生活更智能 下载REPO_SDK 这里将SDK下载到了F:\SDK 2 解压SDK到WSL2 tar -xvf /mnt/f/SDK/rv1126_rv1109_linux_release_20211022.tgz 3 编译依赖安装 gcc、g版本依赖安装 sudo apt-get install lib32gcc-7-dev g-7 l…

普通索引和唯一索引详解

前言 面试的时候有时会问面试者,普通索引和唯一索引有什么区别。很多人,甚至工作很多年的工程师回答的千篇一律 “普通索引可以有重复的值,唯一索引不能有重复的值”。于是我又问,这两个索引这两个索引效率哪个高,很少…

ant design pro的react项目build之后页面为空白解决方法

一、问题 执行yarn build之后访问dist文件夹中的index.html文件为空白 二、解决方法 找到config文件夹中的config.ts文件 添加代码 history: {type: hash }, publicPath: ./,修改完重新build一下就好了

BY组态功能清单

演示地址 :http://www.byzt.net:60/sm/ 官网地址:http://www.hcy-soft.com BY组态是一款非常优秀的纯前端的【web组态插件工具】,可无缝嵌入到vue项目,react项目等,由于是原生js开发,对于前端的集成没有框架…

你真的了解C语言中的【柔性数组】吗~

柔性数组 1. 什么是柔性数组2. 柔性数组的特点3. 柔性数组的使用4. 柔性数组的优势 1. 什么是柔性数组 也许你从来没有听说过柔性数组这个概念,但是它确实是存在的。 C99中,结构体中的最后⼀个元素允许是未知大小的数组,这就叫做柔性数组成员…

Spring Boot整合Kafka

文章目录 1. 介绍2. Kafka基础2.1. 安装KafKakafka集群搭建_kafka交流群-CSDN博客 3. Spring Boot整合Kafka3.1. 引入Kafka依赖3.2.编写配置文件 4. 生产者(produced)4.1. 生产者基础案例(基础测试) 5. 消费者5.1.消费者基本案例(基础测试) 6.Kafka常用配…

python 公共函数及操作符使用示例合集

python公共操作符以及方法是什么 在Python中,公共操作通常指的是那些可以对不同数据类型(如数字、字符串、列表、元组、字典等)进行操作的通用函数或方法。这些操作符或函数通常是内置的,并且可以在Python的官方文档中找到。 主要…

数字电路 第五章—第四节(顺序脉冲发生器)

一、计数型顺序脉冲发生器 1、电路组成 计数型顺序脉冲发生器一般都是按自然态序计数的二进制计数器和译码器组成。 2、输出4个脉冲的顺序脉冲发生器 (1)逻辑电路图(采用JK触发器): (2)时序图…

二叉搜索树的范围和(Lc938)——DFS

给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。 示例 1: 输入:root [10,5,15,3,7,null,18], low 7, high 15 输出:32示例 2: 输入:root [10,5,15,3,7,13,18,1,nul…

家居清洁必备:2024如何挑选高效家用洗地机的实用指南

对于养宠物的家庭来说,宠物的毛发无处不在,尤其在换毛季节,清理工作更加繁琐。此时,洗地机的出现为解决这些问题提供了便利。洗地机可以同时扫地和拖地,实现高效清洁,减轻了清洁负担。而且,洗地…