已有 PyTorch 训练循环时,可在每个优化步骤结束后把损失写入 TensorBoard,再在浏览器查看曲线。这里记录的是训练过程中的标量变化;曲线下降不能单独证明模型泛化更好。下面用人为构造的一维回归数据演示接口,未在具体设备上实测运行速度或训练效果。
写入逐步训练损失
在独立 Python 环境安装 torch 和 tensorboard。PyTorch 的官方 TensorBoard 教程使用 SummaryWriter.add_scalar() 记录数值,并用 tensorboard --logdir 读取日志。以下样本按固定公式生成,只用于确认日志链路。

import torch
from torch.utils.tensorboard import SummaryWriter
torch.manual_seed(7)
x = torch.linspace(-1, 1, 64).reshape(-1, 1)
y = 2 * x + 0.5
model = torch.nn.Linear(1, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
loss_fn = torch.nn.MSELoss()
writer = SummaryWriter(log_dir="runs/toy-regression")
try:
for step in range(30):
optimizer.zero_grad()
prediction = model(x)
loss = loss_fn(prediction, y)
loss.backward()
optimizer.step()
writer.add_scalar("train/loss", loss.item(), step)
print(step, loss.item())
writer.flush()
finally:
writer.close()
在自己的训练脚本里,保留现有的模型、数据加载和优化器,只把 SummaryWriter、add_scalar("train/loss", loss.item(), step) 和关闭写入器的逻辑放入相应位置。确保 step 随优化步骤递增;如果记录的是每轮平均损失,应使用单独的标签和轮次坐标,避免两种口径混在一条曲线上。
打开曲线并核对
tensorboard --logdir=runs
在终端输出的本地地址打开 TensorBoard,进入 Scalars,寻找 train/loss。验证方法是曲线具有与写入步骤对应的点,末尾步骤接近 29;同时检查终端打印的损失是否为有限数。TensorBoard 的平滑显示会改变视觉走势,判断原始值时查看未平滑数据。
若看不到曲线,先检查启动命令的 runs 目录是否与代码中的 log_dir 相同、训练循环是否真正执行以及日志是否已刷盘。若出现 NaN 或损失异常,不应只凭图像调参,应回到输入、目标值、学习率和梯度检查。正式任务还要记录独立验证集指标,不能把这个玩具样本上的训练损失当成模型质量结论。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/29969.html