pytorch——Tensorboard使用

本文介绍了TensorBoard的基本使用方法,包括如何使用SummaryWriter类记录训练过程中的数据,通过add_scalar()函数绘制图表,以及如何利用add_image()函数展示训练过程中图像的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

add_scalar()函数

add_image()函数


        Tensorboard是常用的一种可视化的工具,我们对其中的SummaryWriter类进行调用。

        我们可以查阅其相关说明:

        我们通常使用初始化函数中的第一个参数:文件的名称,也可以不对其进行配置,采用默认。

add_scalar()函数

        使用其中的add_scalar函数,首先查阅说明:

tag相当于图像的标题; scalar_value是要保存的数值,相当于纵轴;global_step是在多少步记录scalar_value的值,相当于横轴。

        一个小实例:

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")#创建一个对象

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

writer.close()

运行完之后,在左侧会出现一个logs文件夹,其中就是Tensorboard的事件文件。

可以在命令行中输入指令tensorboard --logdir=logs来打开该文件:

其中logdir=事件文件所在文件夹名。由运行结果可以看到Tensorboard打开的窗口在主机的6006号。点击就可以看到可视化的结果:

 若同时有好几个训练,都默认打开6006端口,会出现混乱,可以使用:

tensorboard --logdir=logs --port=6007

 如果我们接着改变了函数,但对tag参数没有改变:

writer.add_scalar("y=2x",3*i,i)

 重新运行代码后,打开TensorBoard刷新会发现:

 我们可以将事件文件都删掉重新运行,实现新函数的显示。

add_image()函数

使用其中的add_image()函数,首先查阅说明:

tag是标题;img_tensor是图像数据,要注意其类型,参数应符合类型要求;global_step是训练步骤;dataformats是格式设置。

在这里我们将照片添加到项目目录中,并查看照片的格式:

可以知道,照片格式PIL.JpegImage并不满足参数的格式要求,需要进行转换。如果我们转换为numpy的array形式,则其shape为HWC(H:高度 W:宽度 C:通道):

而我们查阅的add_image()函数相关信息可知,img_tensor默认是CHW,所以需要对dataformats操作。

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

writer = SummaryWriter("logs")#创建一个对象
image_path = "data/train/ants_image/0013035.jpg"#图片的相对路径
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)#将图像转换为numpy的array类型

writer.add_image("title",img_array,1,dataformats='HWC')#可以通过查阅所得的例子中知道HWC的配置
for i in range(10):
    writer.add_scalar("y=x^2",i**2,2*i)

writer.close()

然后从前面说的命令行进行查看:

接着将路径改为另一个图片的路径,将步骤step改为2:

接着运行,在TensorBoard刷新进行查看:

箭头处可以拖动,查看step1。通过改变title可以实现单独显示。

### 使用 `add_image` 方法在 TensorBoard 中可视化图像 在 PyTorch 中,可以使用 `torch.utils.tensorboard.SummaryWriter` 来记录训练过程中的各种指标和图像。对于图像数据的可视化,`SummaryWriter.add_image()` 是一个非常有用的方法。 此方法接受多种类型的输入参数,包括 `torch.Tensor`, `numpy.array` 或者文件路径字符串/二进制流形式的图像数据[^1]: ```python from torch.utils.tensorboard import SummaryWriter import torchvision.transforms as transforms from PIL import Image # 初始化TensorBoard写入器 writer = SummaryWriter('logs') # 加载并预处理图片 image_path = 'example.png' img = Image.open(image_path).convert("RGB") # 确保图像是三通道彩色模式 transform = transforms.ToTensor() # 将PIL.Image转换成tensor img_tensor = transform(img) # 添加单张图片到TensorBoard日志中 global_step = 0 # 记录步数或epoch数量 tag_name = "input_images" writer.add_image(tag=tag_name, img_tensor=img_tensor, global_step=global_step) ``` 上述代码展示了如何加载一张本地存储的图片,并将其作为 tensor 形式的图像添加至 TensorBoard 日志里。这里需要注意的是,在调用 `add_image` 函数之前要确保传入的数据已经被正确地转化为适合的形式——即形状为 `(C,H,W)` 的浮点型 tensor,其中 C 表示颜色通道数目(灰度图为1,RGB彩图为3),H 和 W 则分别代表高度与宽度。 此外,如果想要显示多张图片,则可以通过创建一个 batch 维度来实现这一点;此时每张图片应具有形状 `(N,C,H,W)` ,其中 N 即批次大小,表示有多少张不同的图片被一起送入函数内。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值