【pytorch记录】SummaryWriter保存日志

文章介绍了在PyTorch框架内如何利用TensorBoard库进行日志管理,包括保存标量数据、图片、直方图以及网络结构。通过SummaryWriter类,可以添加Scalar、Image、Histogram等信息,并通过tensorboard命令查看可视化结果。

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

在pytorch框架中,关于日志的保存,其中一种方式就是借鉴使用了tensorboard的库。所以我们需要在环境中安装tensorboard库,然后再在工程中进行该库的调用

1 安装与导入

  • 安装:conda install tensorboardX 或者 pip install tensorboardX
  • 导入
     from tensorboardX import SummaryWriter
     writer = SummaryWriter(logPath)
     ...
     writer.close()
    

2 添加需要保存标量数据

在这里插入图片描述

  • add_scalar(tag, scalar_value, global_step=None) 从源码中我们能看到核心的三个参数为前三个。通俗的讲分别代表
    • tag:图的标签名,唯一标识
      scalar_value:y轴数据,标量数据的具体数值
      global_step:x轴数据,要记录的全局步长值
  • add_scalars(main_tag, tag_scalar_dit)多项标题记录方法,其中:
    • main_tag —— 该图的标签
      tag_salar_dict —— 字典形式的tag-scalar_value对

源码中也有例子:

from tensorboardX import SummaryWriter
import numpy as np

writer = SummaryWriter('run/logs')

max_epoch = 100
for x in range(max_epoch):

    writer.add_scalar('t/y=2x', x * 2, x)    #x*2为y轴数据,x为x轴数据
    writer.add_scalar('t/y=pow_2_x', 2^x, x)
    writer.add_scalars('scalar_group', {"xsinx": x * np.sin(x),
                                     "xcosx": x * np.cos(x)}, x)
    writer.close()


运行完该脚本后,运行tensorboard命令:tensorboard --logdir=./run/
在这里插入图片描述
在浏览器中打开链接:【http://localhost:6006/】
在这里插入图片描述

3 添加需要保存图片数据

在这里插入图片描述
从源码中我们能看到add_image的主要参数如下。通俗的讲分别代表

  • tag:曲线图名字,唯一标识
  • img_tensor:图片数据,类型要求为 tensor/numpy/string 等
  • global_step:要记录的全局步长值
  • dataformats:图片输入的默认维度。注意是"CHW"
from tensorboardX import SummaryWriter
import numpy as np
img = np.zeros((3, 100, 100))
img[0] = np.arange(0, 10000).reshape(100, 100) / 10000
img[1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000

img_HWC = np.zeros((100, 100, 3))
img_HWC[:, :, 0] = np.arange(0, 10000).reshape(100, 100) / 10000
img_HWC[:, :, 1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000

writer = SummaryWriter('run/logs')
writer.add_image('my_image', img, 0)

# If you have non-default dimension setting, set the dataformats argument.
writer.add_image('my_image_HWC', img_HWC, 0, dataformats='HWC')
writer.close()

在这里插入图片描述

4 直方图的记录

画直方图主要为了看参数的分布状态,使用add_histogram(tag, values, global_step=None, bins=’tensorflow’, walltime=None),其中tag, value, global_step的含义同上,示例如下:

# 每个epoch,记录梯度,权值
for name, param in net.named_parameters():
    writer.add_histogram(name + '_grad', param.grad, epoch)
    writer.add_histogram(name + '_data', param, epoch)

5 网络结构的记录

展示结构图使用add_graph(model, input_to_model=None, verbose=False)

writer = SummaryWriter(comment='test_your_comment', filename_suffix="_test_your_filename_suffix")
# 模型
fake_img = torch.randn(1, 3, 32, 32)
yolo = Yolo(classes=2)
writer.add_graph(yolo, fake_img)
writer.close()
<think>我们正在处理用户关于PyTorchSummaryWriter使用的问题。根据用户要求,我们需要生成相关问题,并在回答中自然地添加引用标识。同时,我们需要使用中文回答,并遵循LaTeX格式要求。 首先,我们回顾一下用户的问题:用户想寻找PyTorch相关的教程,特别是关于SummaryWriter的使用。根据引用[3]和引用[4],我们知道PyTorch有相关的文档和教程资源。引用[3]提到了PyTorch2.x的C++部署,而引用[4]则提供了一系列PyTorch多GPU训练和分布式训练的教程链接。但是,用户具体询问的是SummaryWriter,这是PyTorch的一个用于可视化训练过程的工具,属于TensorBoard的集成部分。 因此,我们需要提供关于SummaryWriter的示例用法。同时,我们将参考PyTorch官方文档(如引用[1]中提到的PyTorch PythonAPI文档)来确保准确性。回答结构:1.介绍SummaryWriter的作用。2.展示如何创建SummaryWriter实例。3.提供一些常用的方法示例,如添加标量(scalar)、图像(image)、直方图(histogram)等。4.最后关闭SummaryWriter。同时,我们将生成相关问题。注意:在回答中,我们将在适当的地方添加引用标识,例如引用官方文档的地方。由于用户要求使用中文,我们将用中文编写回答。现在,我们开始编写回答。</think>### PyTorch SummaryWriter 使用示例 `SummaryWriter` 是 PyTorch 与 TensorBoard 集成的核心工具,用于记录训练过程中的各类数据(标量、图像、模型图等)。以下是关键用法示例: #### 1. **基础设置** ```python from torch.utils.tensorboard import SummaryWriter # 创建写入器(日志保存到 runs/exp1 目录) writer = SummaryWriter('runs/exp1') ``` #### 2. **记录标量数据**(如损失/准确率) ```python for epoch in range(100): loss = train(...) acc = validate(...) # 记录损失(主标签:train) writer.add_scalar('Loss/train', loss, epoch) # 记录准确率(主标签:val) writer.add_scalar('Accuracy/val', acc, epoch) ``` #### 3. **记录图像数据** ```python images, _ = next(iter(dataloader)) grid = torchvision.utils.make_grid(images) # 创建图像网格 # 记录图像网格(标题:sample_images) writer.add_image('sample_images', grid, epoch) ``` #### 4. **可视化模型结构** ```python model = MyModel() dummy_input = torch.randn(1, 3, 224, 224) # 模拟输入 # 记录计算图(需安装 graphviz) writer.add_graph(model, dummy_input) ``` #### 5. **记录直方图**(权重分布) ```python for name, param in model.named_parameters(): writer.add_histogram(f'weights/{name}', param, epoch) ``` #### 6. **关闭写入器** ```python writer.close() # 确保缓冲区数据写入磁盘 ``` #### 使用流程: 1. 启动 TensorBoard 服务: ```bash tensorboard --logdir=runs ``` 2. 浏览器访问 `http://localhost:6006` 查看可视化结果 > 关键特性说明: > - 自动目录管理:不同实验保存到独立子目录 > - 异步写入:数据先缓存在内存,定期写入磁盘 > - 支持嵌入投影:通过 `add_embedding()` 实现高维数据可视化 > > 完整 API 详见 [PyTorch 文档](https://pytorch.org/docs/stable/tensorboard.html)[^1]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值