训练脚本引入 Tensorboard 实时观察

要将训练过程实时接入 TensorBoard,核心是在训练代码里埋入 SummaryWriter。无论用 PyTorch 还是 TensorFlow,流程完全一样。

下面必须用 PyTorch,以下是零基础到跑通的完整做法:


第一步:导入并初始化

如果 which tensorboard 没有输出,则安装:

bash 复制代码
pip install tensorboard

在训练脚本开头:

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

# 日志会保存在当前目录的 runs/ 文件夹下
writer = SummaryWriter()

第二步:在训练循环里埋点(最常用的三个位置)

python 复制代码
for epoch in range(num_epochs):
    train_loss = 0.0
    correct = 0
    total = 0

    for i, (data, label) in enumerate(train_loader):
        data, label = data.to(device), label.to(device)
        
        optimizer.zero_grad()
        output = model(data)
        loss = criterion(output, label)
        loss.backward()
        optimizer.step()

        # ─── 累计指标(之前缺失的部分)───
        train_loss += loss.item() * data.size(0)   # 累计总损失(乘以 batch 样本数)
        _, predicted = output.max(1)               # 获取预测类别
        total += label.size(0)                     # 累计总样本数
        correct += predicted.eq(label).sum().item() # 累计正确预测数

        # ─── 此处埋点:每 N 个 batch 记录一次 ───
        global_step = epoch * len(train_loader) + i
        
        if i % 20 == 0:                     # 每 20 个 batch 记录一次
            writer.add_scalar('Loss/train', loss.item(), global_step)
            writer.add_scalar('LR', optimizer.param_groups[0]['lr'], global_step)
    
    # ─── 此处埋点:每个 epoch 结束记录一次 ───
    avg_loss = train_loss / total
    accuracy = 100.0 * correct / total
    
    writer.add_scalar('Loss/epoch_train', avg_loss, epoch)
    writer.add_scalar('Accuracy/epoch_train', accuracy, epoch)
    
    # ─── 验证阶段同样记录 ───
    val_loss, val_acc = validate(model, val_loader, criterion)
    writer.add_scalar('Loss/epoch_val', val_loss, epoch)
    writer.add_scalar('Accuracy/epoch_val', val_acc, epoch)
    
    # 记录模型结构图(仅在第一个 epoch 执行)
    if epoch == 0:
        writer.add_graph(model, data)

writer.close()

第三步:启动 TensorBoard 看板

另开一个终端,在训练脚本同级目录下执行:

bash 复制代码
tensorboard --logdir=runs --port=6006

然后在浏览器打开 http://localhost:6006,就能看到实时刷新的损失曲线和准确率。


常用埋点速查表

需要看的 代码 说明
损失/准确率曲线 writer.add_scalar('标签名', 数值, step) 最常用,标量折线图
模型结构图 writer.add_graph(model, input_tensor) 检查网络结构是否正确
权重/梯度分布 writer.add_histogram('weights', param, epoch) 观察是否梯度消失/爆炸
图片/数据样本 writer.add_images('images', data[:8]) 可视化数据增强效果
超参数对比 多个 logdir 启动 TensorBoard 不同 lr、batch_size 的曲线放一起对比

一个小优化:远程服务器查看

如果训练在远程服务器上,本地浏览器看不了,在服务器上启动时加绑定:

bash 复制代码
tensorboard --logdir=runs --host=0.0.0.0 --port=6006

然后在本地浏览器访问 http://服务器IP:6006


最简上手版

如果只想看 loss 曲线,在训练循环里加这两行就足够了:

python 复制代码
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()

# 训练循环里
writer.add_scalar('Loss', loss.item(), global_step)

然后 tensorboard --logdir=runs 启动,立刻就能看到。

相关推荐
heroacool2 个月前
显卡驱动12.2,用国内源安装torch
torch
进击切图仔3 个月前
微调 qwen 时候踩坑记录
torch·tensorrt·qwen
a1117763 个月前
MonoGS 在 Jetson Orin Nano 上的部署与性能测试
python·开源·torch·cv
a1117763 个月前
jetpack5.0对应版本的torch和torchvision
python·开源·torch
酌量4 个月前
nvidia orin agx刷机忘记CUDA runtime,安装torch和cuda
linux·笔记·ubuntu·torch·cuda·agx
flying_13144 个月前
图神经网络分享系列-HAN(Heterogeneous Graph Attention Network)-torch(一)
深度学习·神经网络·torch·图神经网络·gat·han·语义级注意力
是梦终空4 个月前
计算机毕业设计269—基于python+深度学习+YOLOV8的交通标志识别系统(源代码+数据库+报告)
python·深度学习·opencv·毕业设计·torch·课程设计·pyqt5
曲幽5 个月前
FastAPI + Ollama 实战:搭一个能查天气的AI助手
python·ai·lora·torch·fastapi·web·model·ollama·weatherapi
Together_CZ6 个月前
ultralytics.nn.autobackend——autobackend.py子模块代码详读
yolo·目标检测·torch·ultralytics·autobackend·推理后端·多种模型支持