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

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

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

相关文章

01 Activiti 7:步骤

01 Activiti 7:步骤 1. 整合Activiti2. 业务流程建模3. 部署业务流程4. 启动流程实例5. 查询待办任务6. 处理待办任务7. 结束流程 1. 整合Activiti 业务系统使用 Activiti 来对系统的业务流程进行自动化管理。为了方便业务系统访问(操作)Act…

看了这一篇,你不用再为找oracle安装介质发愁了!

写这篇文章的原因是:经常有49年还想要入国军学习Oracle的小伙伴问要不同版本的Oracle软件安装包(说明一下,尊重版权,拒绝盗版,还是要从正规渠道获得介质) 事实上很多人遇到过样的坑,才发现正规…

YH11047A 三串四串锂电保护板的3串使用问题 8254A电池芯片

网上的示例电路4串正确,但是3串错误 我使用3串接线时,pp-电压只有0.几v。即被保护 根据查询8254A的IC资料 发现3串和4串的电路图有明显区别: 1、3串的sel脚接vss(低电势),4串的sel脚接vdd(高电…

Python AI 速成课:快速打造高效AI

这个文章主要是对python AI 小白的 。实用性很强,不用太多复杂步骤。 第一步:先到Try NVIDIA NIM APIs这个网站 然后使用邮箱注册,很简单和快捷。 第二步:点击微软的phi-3模型,这个API是免费的 第三步: 获取…

00 Activiti 7:介绍

00 Activiti 7:介绍 1. 前言2. 介绍3. 官网4. 核心机制5. BPMN5.1. 核心要素5.1.1. 流程元素5.1.2. 连接元素5.1.3. 数据和消息5.1.4. 协作 1. 前言 工作流(Workflow)是一种管理和自动化业务过程的方法,它将一系列任务或活动按照…

117篇 | 3D Gaussian Splatting论文

本论文集划分为4个部分:综述&基础(14篇)、NeRF在AIGC(54篇)、NeRF在SLAM(自动驾驶)(25篇)、NeRF之场景建模(25篇) https://t.zsxq.com/3ATyE…

大气官网(1):家居家电,海量案例来袭。

设计一款大气的家居家电官网,可以考虑以下几个方面: 色彩选择:选择适合家居家电风格的色彩搭配。可以选择温暖的中性色调,如米白色、灰色和棕色,以增加页面的大气感和舒适感。图片展示:使用高质量的图片展…

京东JD商品SKU信息API返回值解析:精准掌握商品属性

在电子商务迅猛发展的今天,商家对于商品信息的掌握和管理显得尤为重要。作为电商平台的佼佼者,京东(JD)提供了丰富的API接口,使得商家能够轻松地获取商品的详细信息,包括SKU(Stock Keeping Unit…

ESP32 烧录固件

第一步:下载固件 git clone --recursive https://github.com/espressif/esp-at.git 第二步:执行编译 在该目录执行 python build.py install 如图: 第三步:选择芯片 输入2 第四步:选择固件 输入1 第五步&#…

Excel中怎样把单元格里的数据拆分成多行?

时常会遇到这种情况,需要将一个单元格里的数据分拆到多行,可以使用公式,这里演示使用基础操作的办法。 按照excel使用经验,可以复制数据,粘贴到MS Word里,这个是excel的同族软件,兼容性好。 在…

window系统安装MySQL

MySQL的安装和配置 根据不同的系统平台,MySQL由不同安装方式和安装包。 官方下载对应的安装包 官网:www.mysql.com 下载地址:MySQL :: Download MySQL Community Server (Archived Versions) window系统 一、安装包(Windows…

JavaScript 如何理解柯里化函数结构及调用

文章目录 柯里化函数是什么逐步理解柯里化函数 柯里化函数是什么 柯里化(Currying)函数,又称部分求值,是一种函数转换技术。这种技术将一个接受多个参数的函数转换为一系列接受单一参数的函数。具体来说,一个柯里化的…

【研发管理】产品经理知识体系-组合管理

导读:新产品开发的组合管理是一个重要的过程,它涉及到对一系列新产品开发项目进行策略性选择、优先级排序、资源分配和监控。这个过程旨在确保企业能够最大化地利用有限的资源,以实现其战略目标。 目录 1、组合管理、五大目标 2、组合管理的…

张大哥笔记:付费进群创业项目玩法及详细操作教程

今天给大家分享一个赚钱小项目,它就是付费进群系统,这个项目应用范围很广。比如表情包,知识付费,美女写真,虚拟资料,交友扩列等都可以。今天我们就来说一下最近爆火的交友搭子付费进群做个演示案例&#xf…

线性卷积和圆周卷积

文章目录 【 1. 线性卷积 】1.1 图解分析1.2 矩阵相乘实现线性卷积1.3 圆周卷积实现线性卷积1.4 实例:线性卷积的两种实现方法【 2. 圆周卷积 】2.1 图解分析2.2 矩阵相乘实现圆周卷积2.3 频域点乘实现圆周卷积2.4 实例:圆周卷积两种实现方法【 3. 线性卷积和圆周卷积的等价 …

题目:吃奶酪

问题描述: 解题思路: 枚举每种吃奶酪顺序,并计算其距离,选择最小的距离即答案。v数组:记录顺序。 注意点:1. 每次用于min的s需要重置为0。 2. 实数包括小数,所以结构体内x,y为double类型。 3. 第…

基数排序简记

今天手敲 基数排序 代码的时候发现结果不对,这里简记一下原因。 第一版代码(错误) public void radixSort(int[] arr) {// 1. 获取 arr 的最大位数int maxDigit Arrays.stream(arr).max().getAsInt();int maxLen String.valueOf(maxDigit…

赵本山:吃恐龙没?范伟:我想吃我吃的着吗?!

赵本山:吃恐龙没?范伟:我想吃我吃的着吗?! ——小品《升职》(中2)的台词 (接上) 赵本山:据我多年的破案经验 一般罪犯心理这个时候都是手舞足蹈抓耳挠腮 …

算法导论 总结索引 | 第三部分 第十二章:二叉搜索树

1、搜索树数据结构 支持 许多动态集合操作,包括 SEARCH、MINIMUM、MAXIMUM、PREDECESSOR、SUCCESSOR、INSERT 和 DELETE 等。使用搜索树 既可以作为一个字典 又可以作为一个优先队列 2、二叉搜索树上的基本操作 所花费的时间 与这棵树的高度成正比。对于有n个结点的…

Android应用程序构成

binder Android应用程序是由Activity、 Service、 Broadcast Receiver和 Content Provider四种类型的组件构成的, 它们有可能运行在同一个进程中, 也有可能运行在不同的进程中。 此外, 各种系统组件也运行在独立的进程中, 例如&a…