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 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()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧旅游+数字化景区整体解决方案:文件全文83页,附下载

关键词:智慧景区建设,智慧旅游一体化平台,数字化景区建设,智慧旅游建设,智慧景区解决方案,智慧文旅解决方案,智慧旅游解决方案 一、景区智慧旅游建设需求与背景分析 1、技术发展背景 随着信息…

pyspark(一) DataFrame结合jupyter入门

DataFrame描述 DataFrame是一个二维表结构,包括行、列以及schema(元数据) 在 Spark 中,DataFrame 是一种以 RDD 为基础的分布式数据集,是一种特殊的RDD,是一个分布式的表,类似于传统数据库中的…

力扣SQL50 使用唯一标识码替换员工ID 查询

Problem: 1378. 使用唯一标识码替换员工ID 思路 left join:左连接 Code select eu.unique_id,e.name from Employees e left join EmployeeUNI eu # left join 左连接 on e.id eu.id;

【Linux进程】进程状态(运行阻塞挂起)

目录 前言 1. 进程状态 2. 运行状态 3. 阻塞状态 4. 挂起状态 5. Linux中具体的状态 总结 前言 在Linux操作系统中,进程状态非常重要,它可以帮助我们了解进程在系统中的运行情况,从而更好地管理和优化系统资源,在Linux系统中&am…

USLE模型-LS因子的计算

目录 计算坡度计算填洼计算流向计算水流长度计算水平投影![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/75e015b2d6874ce9b6652f2b8730b90f.png)计算可变的坡度指数m计算坡长因子L计算坡度因子S计算LS因子参考视频 计算坡度 准备好30米分辨率的dem 计算填洼 计…

Linux之安装Nginx、前后端分离项目部署

目录 一、安装Nginx 1.1先一键安装4个依赖 1.2下载并解压安装包 1.3安装nginx,一般我们在nginx都是要安装ssl证书的 1.4 启动nginx服务 1.5开放80端口 1.6配置nginx自启动 1.7修改/etc/rc.d/rc/local的权限 二、多个tomcat负载加后端部署 2.1创建多个tomca…

论文设计任务书学习文档|基于Vue.js的库存管理系统的设计与实现

文章目录 论文(设计)题目:基于Vue.js的库存管理系统的设计与实现1、论文(设计)的主要任务及目标2、论文(设计)的主要内容3、论文(设计)的基本要求4、进度安排论文(设计)题目:基于Vue.js的库存管理系统的设计与实现 1、论文(设计)的主要任务及目标 基于Vue.js的…

代码随想录算法刷题训练营day29:LeetCode(491)递增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II

代码随想录算法刷题训练营day29:LeetCode(491)递增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II LeetCode(491)递增子序列 题目 代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; im…

【Web】青少年CTF擂台挑战赛 2024 #Round 1 wp

好家伙,比赛结束了还有一道0解web题是吧( 随缘写点wp(简单过头,看个乐就好) 目录 EasyMD5 PHP的后门 PHP的XXE Easy_SQLi 雏形系统 EasyMD5 进来是个文件上传界面 说是只能上传pdf,那就改Content-Type为application/pdf,改…

使用R语言进行Logistic回归分析(2)

一、数据集描述,问题要求 下表是40位肺癌病人的生存资料,X1表示生活行为能力平分(1到100),X2为病人的年龄(年),X3由诊断到进入研究的时间(月),X4…

【Android开发】01-第一个Android APP

一、改MainActivity class MainActivity : AppCompatActivity() {/*因Android的app有生命周期,故入口是OnCreate而不是main函数*/override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main…

Unity编写Shader内置各种矩阵和方法介绍

嗨,各位小伙伴们,我是你们的好朋友咕噜铁蛋!今天,我们要来聊一聊关于Unity中编写Shader时内置的各种矩阵和方法。作为Unity开发者,掌握Shader编写是非常重要的一项技能,而了解内置的矩阵和方法将帮助我们更…

LeetCode383. 赎金信(C++)

LeetCode383. 赎金信 题目链接代码 题目链接 https://leetcode.cn/problems/ransom-note/description/ 代码 class Solution { public:bool canConstruct(string ransomNote, string magazine) {int record[26] {0};if(ransomNote.size() > magazine.size()) return fa…

利用networkx做固定坐标的样例图

图技术 利用neo4j、networkx、dgl、python做图分析挖掘 【1】最短路径算法dijkstra 【2】基于networkx的隐性集团关系识别模型 【3】基于Neo4j的担保社群型态分析挖掘 【4】基于python求有向无环图中target到其他节点全路径 【5】有向图中任意两点的路径 【6】图基础入门 【7】…

c++之运算符,程序流程结构

运算符 作用&#xff1a;用于执行代码的运算 1算术运算符 作用&#xff1a;用于处理四则运算 下面我们用代码展示&#xff1a; #include<iostream> using namespace std; int main() {//加减乘除int a1 10;int b1 3;cout <<" a1 b1 "<< a1…

Python小白必学的面向对象

我们已经知道在Python中“一切皆对象”&#xff0c;每个对象都有特定的类型&#xff0c;现在让我们来尝试创建自己的类型——这需要使用class关键字来定义新的“类”&#xff08;Class&#xff09;&#xff0c;类是用来生成对象的“模板”&#xff0c;对象则是其所属类的“实例…

Codeforces Round 930 (Div. 2)(A~B)补题

Codeforces Round 930 Div. 2 A. Shuffle Party1、模拟过程2、代码 B. Binary Path1、过程模拟2、代码 A. Shuffle Party A. Shuffle Party A. Shuffle Partytime limit per test: 1 secondmemory limit per test: 256 megabytesinput: standard inputoutput: standard outpu…

2024年3月2日 十二生肖 今日运势

小运播报&#xff1a;2024年3月2日&#xff0c;星期六&#xff0c;农历正月廿二 &#xff08;甲辰年丙寅月乙丑日&#xff09;&#xff0c;法定节假日。 红榜生肖&#xff1a;鸡、蛇、鼠 需要注意&#xff1a;狗、马、羊 喜神方位&#xff1a;西北方 财神方位&#xff1a;东…

【刷题】位运算

消失的两个数字 消失的两个数字 “单身狗”进阶版思路 class Solution { public:vector<int> missingTwo(vector<int>& nums) {int ret 0;int n nums.size();for(int i 0; i < n; i){ret ^ (nums[i] ^ i);}ret ^ (n ^ (n 1) ^ (n 2));// 按位异或的…

基于SpringBoot的综合小区管理系统的设计与实现

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…