Pytorch基本操作(3)——TensorBoard的使用

1 简介

在学习李沐在B站发布的《动手学深度学习》PyTorch版本教学视频中发现在操作使用PyTorch方面有许多地方看不懂,往往只是“动手”了,没有动脑。所以打算趁着寒假的时间好好恶补、整理一下PyTorch的操作,以便跟上课程。

学习资源:

    B站up主:我是土堆的视频: PyTorch中文手册: Datawhale开源内容:

2 TensorBoard

  1. writer.add_scalar()
  2. writer.add_image()
  3. writer.close()

2.1 SummaryWriter

用于观察损失函数的变化

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs") # 事件文件存放地址

2.1.1 writer.add_scalar()

    tag:标题 scalar_value:添加的值,就是y轴 global_step:训练步数,就是x轴
for i in range(100):
    writer.add_scalar("y=2x", 2*i, i)  # 注意第一个2*i对应的是y,第二个i对应x

在命令行中打开tensorboard

注意在命令行要通过cd语句更改到当前工作路径,否则会找不到事件文件夹导致tensorboard页面出现No dashboards are active for the current data set.的错误

  1. tensorboard --logdir logs --port=6007 # logdir = 事件文件所在文件夹名;port指定端口,避免服务器和别人冲突。
  2. 打开命令行中提示的网址http://localhost:6007/ 进行查看
  3. 想要重置图像可以通过删除已有的事件文件来达到

2.1.2 writer.add_image()

    tag:标题 img_tensor:要求图像的数据类型为torch.Tensor,numpy.array,string/blobname global_step:训练步数 dataformats = HWC:图片的格式High高度,Weight宽度,channel通道数;默认通道数在前

从PIL到numpy,需要在add_image()中指定shape中每一个数字/维表示的含义

from PIL import Image
import numpy as np

image_path = r"F:Data and codedata蚂蚁蜜蜂数据hymenoptera_datahymenoptera_data	rainants013035.jpg"
img_PIL = Image.open(image_path) # 这样读取出来的数据类型为PIL.JpegImage.......,总之不符合要求,需要转换
img_array = np.array(img_PIL) # 得到writer.add_image()函数所需要的数据类型

writer.add_image("test", img_array, 1, dataformats = HWC) # High高度,Weight宽度,channel通道数;默认通道数在前

在TensorBoard里面image里面则可以看到第1步的图片

标题"test"不变的话,添加图片增加步数,则新图片添加到原图片的后一张,并可以拖动条来切换 来观察随着步数的提升的变换趋势 ;如果标题变化则另起一框来显示,如:

image_path = r"F:Data and codedata蚂蚁蜜蜂数据hymenoptera_datahymenoptera_data	rainants013035.jpg"
img_PIL = Image.open(image_path) # 这样读取出来的数据类型为PIL.JpegImage.......,总之不符合要求,需要转换
img_array = np.array(img_PIL) # 得到writer.add_image()函数所需要的数据类型

writer.add_image("test", img_array, 1, dataformats = HWC) # High高度,Weight宽度,channel通道数;默认通道数在前,
img_PIL = Image.open(r"F:Data and codedata蚂蚁蜜蜂数据hymenoptera_datahymenoptera_data	rainants5650366_e22b7e1065.jpg") # 这样读取出来的数据类型为PIL.JpegImage.......,总之不符合要求,需要转换
img_array = np.array(img_PIL)

writer.add_image("test", img_array, 2, dataformats = HWC) # 注意这里step由1变为了2

img_PIL = Image.open(r"F:Data and codedata蚂蚁蜜蜂数据hymenoptera_datahymenoptera_data	rainants5650366_e22b7e1065.jpg") # 这样读取出来的数据类型为PIL.JpegImage.......,总之不符合要求,需要转换
img_array = np.array(img_PIL)

writer.add_image("train", img_array, 1, dataformats = HWC) # 这里改变标题为train

2.1.3 writer.close

把缓存中保存的数据写到目标events文件中,一旦训练中断没有close,则你的保存目录中不会有相应的数据。

经验分享 程序员 微信小程序 职场和发展