You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch训练中如何记录各轮次准确率等指标?求常规实现方案

PyTorch训练指标记录的业内常规实现方式

你用列表记录指标再转DataFrame存CSV的做法本身是可行的,但业内有更规范、可扩展的方案,主要分为两类:手动优化的轻量方案,和用成熟工具的方案。

一、手动优化的轻量方案(适合小项目/快速迭代)

你当前的列表方式可以优化,改用字典统一管理指标,避免单独维护多个列表,新增指标时更灵活:

def train(model, criterion, optimizer, scheduler, num_epochs=25):
    # 用字典统一存储所有指标,键为指标名称,值为对应历史列表
    metrics_history = {
        'train_loss': [],
        'val_loss': [],
        'train_acc': [],
        'val_acc': []
    }
    
    for epoch in range(num_epochs):
        # 此处写入你的训练、验证逻辑,计算当前轮次的各项指标
        # train_loss, train_acc = ...
        # val_loss, val_acc = ...
        
        # 统一追加指标到字典对应列表
        metrics_history['train_loss'].append(train_loss)
        metrics_history['train_acc'].append(train_acc)
        metrics_history['val_loss'].append(val_loss)
        metrics_history['val_acc'].append(val_acc)
    
    # 转DataFrame并保存,逻辑和你原本一致,但结构更清晰
    import pandas as pd
    df = pd.DataFrame(metrics_history)
    df.to_csv('training_metrics.csv', index=False)
    return metrics_history

这种方式的优势是:新增指标(如F1分数、学习率)时,仅需在字典中添加对应键即可,无需额外定义新列表,代码更整洁易维护。

二、用专业实验追踪工具(适合中大型项目/长期实验)

业内做模型训练时,更常用成熟的实验追踪工具记录指标,这类工具不仅能存储数据,还支持实时可视化、实验对比、模型版本管理等功能,常用的有:

1. TensorBoard(PyTorch官方集成)

PyTorch原生支持TensorBoard,无需复杂依赖,就能实时查看指标曲线:

from torch.utils.tensorboard import SummaryWriter

def train(model, criterion, optimizer, scheduler, num_epochs=25):
    # 初始化日志写入器,指定日志保存目录
    writer = SummaryWriter(log_dir='./runs/training_exp_1')
    
    for epoch in range(num_epochs):
        # 计算训练、验证指标
        train_loss, train_acc = train_one_epoch(model, criterion, optimizer, train_loader)
        val_loss, val_acc = validate(model, criterion, val_loader)
        
        # 将指标写入TensorBoard
        writer.add_scalar('Loss/Train', train_loss, epoch)
        writer.add_scalar('Loss/Val', val_loss, epoch)
        writer.add_scalar('Accuracy/Train', train_acc, epoch)
        writer.add_scalar('Accuracy/Val', val_acc, epoch)
        # 还可记录学习率、模型权重直方图等更多信息
        writer.add_scalar('Learning Rate', optimizer.param_groups[0]['lr'], epoch)
    
    writer.close()

运行后,在终端执行tensorboard --logdir=runs,即可在浏览器中查看实时更新的指标曲线,直观追踪训练进度。

2. Weights & Biases(W&B)

这是业内流行的第三方实验管理工具,功能比TensorBoard更全面,支持实验对比、团队协作、自动保存代码与模型版本:

import wandb

def train(model, criterion, optimizer, scheduler, num_epochs=25):
    # 初始化W&B项目,指定实验名称
    wandb.init(project='my_pytorch_project', name='training_run_1')
    
    # 可将超参数同步记录,方便后续对比
    wandb.config = {
        "learning_rate": optimizer.param_groups[0]['lr'],
        "epochs": num_epochs,
        "batch_size": train_loader.batch_size
    }
    
    for epoch in range(num_epochs):
        train_loss, train_acc = train_one_epoch(model, criterion, optimizer, train_loader)
        val_loss, val_acc = validate(model, criterion, val_loader)
        
        # 批量记录指标到云端
        wandb.log({
            "train_loss": train_loss,
            "train_acc": train_acc,
            "val_loss": val_loss,
            "val_acc": val_acc,
            "lr": optimizer.param_groups[0]['lr']
        }, step=epoch)
    
    wandb.finish()

W&B会自动将所有数据同步到云端,你可在网页端随时查看、对比不同实验的结果,还能生成标准化的实验报告。

总结

  • 小项目/快速验证:优先选择字典统一管理指标再存CSV,或用TensorBoard做轻量可视化。
  • 中大型项目/长期实验:推荐使用W&B这类专业工具,能大幅提升实验管理效率与可追溯性。

内容的提问来源于stack exchange,提问作者test tes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 02:15:34