PyTorch深度学习(小土堆)笔记4: PyTorch 训练不再“开盲盒”,TensorBoard 可视化保姆级教程

文章目录

  • [一、 核心原理:它是如何工作的?](#一、 核心原理:它是如何工作的?)
  • [二、 快速上手:三步法记录数据](#二、 快速上手:三步法记录数据)
  • [三、 进阶:如何展示图片(add_image)?](#三、 进阶:如何展示图片(add_image)?)
  • [四、 成果展示:如何打开可视化面板?](#四、 成果展示:如何打开可视化面板?)
  • [⚠️ 避坑指南:为什么我的曲线乱七八糟?](#⚠️ 避坑指南:为什么我的曲线乱七八糟?)
  • [📝 总结](#📝 总结)

你是否在训练模型时,只能盯着终端那一串串枯燥的数字发呆?loss 到底降了没?训练速度正不正常?今天,我们就来拆解深度学习开发者的"专业护目镜"------TensorBoard。只需几行代码,就能让你的模型训练过程从"开盲盒"变成"看大片"!


一、 核心原理:它是如何工作的?

简单来说,SummaryWriter 是为了给你的模型训练安装一个监控摄像头

  • PyTorch 训练过程 = 正在进行的足球比赛。
  • SummaryWriter = 场边的记分员,每分钟记录比分。
  • Logs 文件夹 = 记分员手中的笔记本(事件文件)。
  • TensorBoard 界面 = 电视上的实时转播画面(可视化面板)。

在 PyTorch 中使用 TensorBoard 极其简单,核心逻辑只有:创建容器 -> 写入数据 -> 关闭容器。


二、 快速上手:三步法记录数据

在 PyTorch 中使用 TensorBoard,核心逻辑只有:创建容器 -> 写入数据 -> 关闭容器。

python 复制代码
from torch.utils.tensorboard import SummaryWriter

# 1. 创建实例:指定生成的事件文件存放目录(文件夹名为 logs)
writer = SummaryWriter('logs')

# 2. 写入数据
for i in range(100):
    # 参数含义:标题(Tag), Y轴数值(Scalar), X轴步数(Step)
    writer.add_scalar("y=x", i, i)

# 3. 关闭实例(养成好习惯,确保数据完整写入)
writer.close()

💡 参数小贴士

python 复制代码
writer.add_scalar(tag, scalar_value, global_step)
  • tag:图表标题。
  • scalar_value:Y 轴数值(如 Loss、Accuracy)
  • global_step:X 轴步数(如 Epoch 或 Iteration)。

三、 进阶:如何展示图片(add_image)?

有时候我们需要直接观察模型训练中的图片变化,这时要注意类型转换和"维度陷阱"。
1. 类型转换

add_image 不支持 PIL 格式,必须转为 TensorNumpy 数组。

python 复制代码
import numpy as np
from PIL import Image

img = Image.open('test.jpg')
img_array = np.array(img)  # PIL 转 Numpy

2. 维度避坑(重要!)

普通 RGB 图片通常是 (高, 宽, 通道)HWC,但 TensorBoard 默认接收 CHW

  • 解决方案:手动指定 dataformats='HWC'
python 复制代码
# 修改 title 即可创建新窗口,修改 step 即可展示不同步骤
writer.add_image("input_img", img_array, 1, dataformats='HWC')

四、 成果展示:如何打开可视化面板?

运行完代码后,你会发现项目目录下多了一个名为 logs 的文件夹。生成了 logs 文件夹后,不能直接双击打开,需要借助 Terminal(终端)。
1. 启动命令,在终端中输入:

python 复制代码
tensorboard --logdir=logs

2. 避开端口冲突

如果你的电脑或服务器上还有其他人在使用 TensorBoard,默认端口 6006 可能会被占用。这时可以手动指定一个端口:

python 复制代码
tensorboard --logdir=logs --port=6007

3. 查看网页

输入完命令后,终端会返回一个网址(通常是 http://localhost:6006/)。复制或者点击该链接到浏览器即可。


⚠️ 避坑指南:为什么我的曲线乱七八糟?

很多同学在第二次运行程序时,发现曲线出现了"反复横跳"的重叠现象。
原因分析:

TensorBoard 会读取 logs 文件夹下的所有文件。如果你不删除旧的事件文件就直接运行新代码,它会将新旧数据重叠绘制在一起。

解决方案:

物理删除:每次开启新实验前,手动删掉 logs 文件夹。


📝 总结

  1. 导包:from torch.utils.tensorboard import SummaryWriter
  2. 记录:add_scalar 记数值,add_image 记图片(注意 HWC)。
  3. 启动:终端执行 tensorboard --logdir=文件夹名
  4. 清理:新实验前记得删旧 log。
相关推荐
zh路西法15 小时前
【CAM Grad-CAM Grad-CAM++】深度学习模型可解释性:从原理到YOLOv8部署实战
人工智能·深度学习·yolo·yolov8·grad-cam·cam
没有梦想的咸鱼185-1037-166316 小时前
AI-Python机器学习与深度学习技术:CNN/Transformer/扩散模型、SHAP可解释及Hermes智能体自动化
人工智能·python·深度学习·机器学习·chatgpt·cnn·transformer
AI探索先锋17 小时前
AMD 2nm 芯片炸裂、欧洲首家人形机器人独角兽诞生、AI Agent 互联标准打响:10 条信号看懂产业变局|今日科技 AI 机器人快讯
大数据·人工智能·深度学习·搜索引擎·机器人
卡梅德生物科技小能手17 小时前
卡美德生物科普:RSPO3(R - 脊椎蛋白 3)
经验分享·深度学习·生活
谙弆悕博士18 小时前
信息系统项目管理师教程(第4版)笔记——第 2 章 信息技术发展
笔记·职场和发展·软考高级·软考·高项·项目经理
wp123_119 小时前
【硬件选型笔记】TONEVEE MVL4020-1R2M 与Coilcraft XAL4020-122MEC 大电流功率电感参数深度解析
笔记
aaaameliaaa19 小时前
指针之总结
c语言·笔记·算法
撩得Android一次心动20 小时前
Linux编程笔记3【个人用】
linux·笔记
撩得Android一次心动1 天前
Linux编程笔记4【个人用】
linux·笔记·学习
千天夜1 天前
让大模型“先想再答”:Chain-of-Thought Prompting 论文精读——CoT 为什么能激发多步推理?
人工智能·深度学习·llm·gpt-3·llama