当前位置: 首页 > news >正文

pytorch小记(三十三):PyTorch 使用 TensorBoard 可视化训练过程(含完整示例)

pytorch小记(三十三):深PyTorch 使用 TensorBoard 可视化训练过程(含完整示例)

  • PyTorch 使用 TensorBoard 可视化训练过程(含完整示例)
    • 📌 一、什么是 TensorBoard?
    • ✅ 二、SummaryWriter 是什么?
    • 🛠 三、常见用法示例
      • 1. 初始化 writer
      • 2. 写入标量(scalar)
      • 3. 写入图像
      • 4. 写入模型结构图
      • 5. 写入参数直方图(查看收敛趋势)
      • 6. 关闭 writer(必须)
    • 🚀 四、完整 PyTorch 示例(MNIST 分类)
    • 📺 五、运行 TensorBoard
    • 🧠 六、常用方法速查表
    • ✅ 七、总结


PyTorch 使用 TensorBoard 可视化训练过程(含完整示例)

TensorBoard 是深度学习训练中最重要的可视化工具之一,本文将详细介绍如何在 PyTorch 中使用 SummaryWriter 写入训练过程数据,并通过 TensorBoard 进行可视化,附完整训练示例。


📌 一、什么是 TensorBoard?

TensorBoard 是一个可视化工具,最初由 TensorFlow 团队开发,现在也被 PyTorch 原生支持。它可以帮助我们直观地监控训练过程,比如:

  • Loss、Accuracy 的变化趋势
  • 模型结构图(Computation Graph)
  • 权重分布直方图(Histogram)
  • 图像输入和中间特征图
  • 甚至音频、视频等数据

在 PyTorch 中,我们只需使用:

from torch.utils.tensorboard import SummaryWriter

即可引入官方支持的可视化工具。


✅ 二、SummaryWriter 是什么?

SummaryWriter 是 PyTorch 提供的一个类,用于将数据写入磁盘,供 TensorBoard 读取。你可以用它记录:

  • scalar(标量,如 loss, acc)
  • image(图像)
  • graph(模型结构)
  • histogram(参数分布)

🛠 三、常见用法示例

1. 初始化 writer

from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter(log_dir='runs/exp1')  # 会自动创建 runs/exp1 目录

2. 写入标量(scalar)

writer.add_scalar("Loss/train", loss_value, epoch)
writer.add_scalar("Accuracy/val", acc_val, epoch)

3. 写入图像

writer.add_images("Input Images", images, global_step=0)

4. 写入模型结构图

writer.add_graph(model, input_tensor)

5. 写入参数直方图(查看收敛趋势)

for name, param in model.named_parameters():writer.add_histogram(name, param, epoch)

6. 关闭 writer(必须)

writer.close()

🚀 四、完整 PyTorch 示例(MNIST 分类)

以下是一个完整的训练+TensorBoard可视化代码:

import torch
import torch.nn as nn
import torchvision
import torchvision.transforms as transforms
from torch.utils.tensorboard import SummaryWriter# 数据加载
transform = transforms.ToTensor()
trainset = torchvision.datasets.MNIST(root='./data', train=True, transform=transform, download=True)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)# 模型定义
model = nn.Sequential(nn.Flatten(),nn.Linear(28*28, 128),nn.ReLU(),nn.Linear(128, 10)
)criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)# 初始化 TensorBoard Writer
writer = SummaryWriter('runs/mnist_demo')# 训练过程
for epoch in range(5):running_loss = 0.0for i, (inputs, labels) in enumerate(trainloader):optimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()running_loss += loss.item()avg_loss = running_loss / len(trainloader)writer.add_scalar('Loss/train', avg_loss, epoch)print(f"Epoch [{epoch+1}/5], Loss: {avg_loss:.4f}")# 写入模型结构
sample_input = torch.rand(1, 1, 28, 28)
writer.add_graph(model, sample_input)writer.close()

📺 五、运行 TensorBoard

  1. 在终端中输入:
tensorboard --logdir=runs
  1. 打开浏览器访问:
http://localhost:6006

你就可以看到 loss 曲线、模型结构等内容。


🧠 六、常用方法速查表

方法作用
add_scalar()写入标量
add_images()写入图像
add_graph()写入模型结构图
add_histogram()写入参数直方图
close()关闭 writer

✅ 七、总结

使用 SummaryWriter 可以让我们更好地理解模型训练过程,是调参和模型诊断的必备工具。

如果你正在使用 PyTorch 训练深度神经网络,建议立即集成 TensorBoard 可视化。几行代码就能让训练过程清晰透明,提升效率!

http://www.xdnf.cn/news/1215631.html

相关文章:

  • LLM—— 基于 MCP 协议(SSE 模式)的工具调用实践
  • 30道JS高频经典笔试题集合+详解(一)
  • 华为昇腾×绿算全闪存缓存释放澎湃潜能
  • 【LeetCode】链表反转实现与测试
  • 比特币挖矿的能源消耗和环保问题
  • 关于“LoggerFactory is not a Logback LoggerContext but Logback is on ......“的解决方案
  • C++代码题部分(1)
  • LLM 模型部署难题的技术突破:从轻量化到分布式推理的全栈解决方案
  • AutoSAR(MCAL) --- ADC
  • Linux虚拟内存
  • 【C#】DevExpress.XtraEditors.MemoEdit memoEditLog控件讲解
  • AI服务器中,EEPROM有哪些部件使用,需要存储哪些信息?
  • Syzkaller实战教程2:运行环境配置+实例运行
  • 在Trae中使用MoonBit月兔
  • Android调用python库和方法的实现
  • 三十四、【Linux常用工具】rsync+inotify实时同步演示
  • GitHub使用小记——本地推送、外部拉取和分支重命名
  • Camera相机人脸识别系列专题分析之十九:MTK ISP6S平台FDNode传递三方FFD到APP流程解析
  • git本地仓库,工作区和暂存区的知识
  • llama factory本地部署常见问题
  • 用Python+MySQL实战解锁企业财务数据分析
  • 会吸的簸箕专利拆解:迷你真空组件的吸力控制与吸入口设计原理
  • Redis学习------缓存穿透
  • 数据建模怎么落地?从概念、逻辑到物理模型,一文讲请!
  • Prometheus-2--什么是Exporter是什么?
  • Spring boot 打包成docker image 镜像
  • 数据结构第3问:什么是线性表?
  • (RedmiBook)上禁用触摸板或自带键盘
  • 4.方法的使用
  • OmniParser:提升工作效率的视觉界面解析工具