当前位置: 首页 > 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.lryc.cn/news/604796.html

相关文章:

  • 用 Go Typed Client 快速上手 Elasticsearch —— 从建索引到聚合的完整实战
  • 8.Linux : 日志的管理与时钟同步的配置
  • Rabbit MQ的消息模式-Java原生代码
  • YOLO-01目标检测基础
  • 02 基于sklearn的机械学习-特征降维(特征选择、PCA)、KNN算法、模型选择与调优(交叉验证、朴素贝叶斯算法、拉普拉斯平滑)
  • Android调用python库和方法的实现
  • YOLOv5u:无锚点检测的革命性进步
  • android-PMS-创建新用户流程
  • 舆情监测专员需要哪些常用软件工具?
  • 基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(一)
  • 论文Review 3DGSSLAM S3PO-GS | ICCV 2025 港科广出品!| 高效快速的3DGSSLAM!
  • sqli-labs:Less-1关卡详细解析
  • CMS框架漏洞
  • 3D Web轻量化引擎HOOPS Communicator数据处理与流式加载能力概述
  • 【音视频】WebRTC-Web 音视频采集与播放
  • 【预判一手面试问题:排序】
  • 依托客户满意度分析协助企业精准把握市场趋势​(满意度调查)
  • 智能AI医疗物资/耗材管理系统升级改造方案分析
  • InfluxDB 与 Java 框架集成:Spring Boot 实战(二)
  • VSCode插件开发完整教程:从零开始创建文件导出插件
  • Python 程序设计讲义(37):字符串的处理方法——设置字符串居中显示:center() 方法
  • 图像平滑处理
  • 9.项目起步(3)
  • OpenCV学习day1
  • 实习小记(个人中心的编辑模块)
  • 商标注册后可以随意更改字体和颜色吗!
  • 怎么理解锁相环主时钟(PLL)怎么做到对时钟进行倍频?
  • Keil STM32工程各文件作用
  • AI框架工具FastRTC快速上手2——整体框架及Stream类详解
  • 方块世界:失落文明的遗产