pytorch学习笔记_tensorboard

本文介绍了如何使用TensorBoard记录和可视化神经网络训练中的标量数据和图像,包括使用SummaryWriter实例,添加标量数据(如损失值),以及记录和显示图像数据。通过实例演示了如何在训练过程中监控和调整模型性能。
摘要由CSDN通过智能技术生成

使用TensorBoard进行数据记录与可视化

TensorBoard是一个强大的工具,用于可视化神经网络训练过程中的各种指标,帮助开发者监控模型训练,分析性能并做出相应的调整。

绘制函数

初始化TensorBoard

首先,我们需要引入必要的库并创建一个SummaryWriter实例。这个实例将用于记录数据,数据会被保存在指定的目录下,这里是"logs"目录,所以等全部代码完成并运行后,可以在logs这个文件中找到我们创建的图像对应的文件,如何打开这个文件呢?在后面有叙述。

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")
记录标量数据

在训练过程中,我们经常需要跟踪诸如损失值、准确率等标量数据的变化。这可以通过SummaryWriteradd_scalar方法来实现。我们模拟了一个简单的场景,将函数y=2x的值随着迭代次数的增加而记录下来。

for i in range(100):
    writer.add_scalar('y=2x', 2*i, i)
  • 'y=2x'是标签名,表示我们正在记录的数据类型或实验名称。
  • 2*i表示每次迭代计算的值,模拟为损失值或其他标量指标,也就是图中的y。
  • i是迭代次数,作为每个点在图表上的x轴位置。
关闭SummaryWriter

完成所有记录任务后,调用writer.close()确保所有数据都被正确地写入磁盘,并且释放了SummaryWriter占用的资源。这一步骤是非常重要的,特别是在记录大量数据或进行长时间运行的训练时。

writer.close()
使用TensorBoard查看数据

一旦数据被记录并保存,我们可以使用TensorBoard来可视化这些数据。在终端中,运行以下命令来启动TensorBoard,并指定日志文件的位置:

tensorboard --logdir=logs

完整代码:

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")
for i in range(100):
    writer.add_scalar('y=2x',2*i,i)
#关于这些参数代表的什么,可以通过文章末尾的链接查看官方文档,里面会有写。
writer.close()

读取图片

读取和处理图像数据

接下来,读取一个图像文件,将其转换为适合记录到TensorBoard的格式。这个过程分为两步:

  1. 读取图像:使用Pillow库(PIL)读取图像文件。这里,Image.open(image_path)返回一个PIL Image对象,它提供了丰富的图像处理功能,下面这段代码就是先获取一个图片的地址,然后通过这个地址访问图片,得到图片的数据。

    image_path = "data/train/ants_image/0013035.jpg"
    #注意,要记录对应图片的相对地址
    img_PIL = Image.open(image_path)
    
  2. 转换为NumPy数组:将PIL Image对象转换成NumPy数组。这是因为TensorBoard期望图像数据以NumPy数组的形式提供。转换后的数组img_array保留了图像的像素数据,但以NumPy数组的形式表示,便于进行数值操作和分析,简单点说,就是后面的add.image函数需要numpy类型的数据

    img_array = np.array(img_PIL)
    
记录图像到TensorBoard

最后,使用writer.add_image方法将图像数据记录到TensorBoard。这个方法允许指定图像的标签、图像数据本身、记录的步骤(epoch或迭代次数),以及数据的格式。

  • “test”:图像的标签,在TensorBoard中用于识别图像。
  • img_array:图像数据,以NumPy数组的形式提供。
  • 1:图像记录的步骤。这个值用于在TensorBoard中跟踪图像随训练过程的变化,如果不懂这个的作用,可以试着再添加一个图片,并且将新图片的step设成2,看看效果
  • dataformats=‘HWC’:指明图像数据的格式。这里HWC代表图像的高度(Height)、宽度(Width)和颜色通道数(Channels),这是TensorBoard解析图像数据的标准格式。
writer.add_image("test", img_array, 1, dataformats='HWC')

但不知道为什么,只有添加下面这段代码后才能出现图像,等未来再完善这篇文章吧

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

完整代码:

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)
writer.add_image("test",img_array,1,dataformats='HWC')

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

总结和实战

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

writer = SummaryWriter("logs")
img_path = "data/train/ants_image/20935278_9190345f6b.jpg"
img_PIL = Image.open(img_path)
img_0 = np.array(img_PIL)
writer.add_image("test",img_0,1,dataformats='HWC')
img_PPIL = Image.open("data/train/ants_image/49375974_e28ba6f17e.jpg")
img_1 = np.array(img_PPIL)
writer.add_image("test",img_1,2,dataformats='HWC')

for i in range(100):
    writer.add_scalar("loss/wad",2*i,i)
writer.close()

官方文档:https://pytorch.org/docs/stable/tensorboard.html#module-torch.utils.tensorboard
https://pillow.readthedocs.io/en/stable/reference/Image.html

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值