tensorboard同时显示训练曲线和测试曲线

本文介绍了一种在TensorFlow中同时记录训练集和测试集曲线的方法。通过设置两个不同的summary writer,可以有效地将两种数据分开记录,便于后续的分析与可视化。这种方式有助于直观地评估模型在训练过程中的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做网络训练实验时,有时需要同时将训练曲线和测试曲线一起显示,便于观察网络训练效果。经过很多次踩坑后,终于解决了。
具体的方法是:设置两个writer,一个用于写训练的数据,一个用于写测试数据,并且这两个writer分别存在train和test路径中,注意测试的writer不能加sess.graph如下代码所示。

...
train_log_dir = 'logs/train/'
test_log_dir = 'logs/test/'   # 两者路径不同
megred = tf.summary.merge_all()
with tf.Session() as sess:
    writer_train = tf.summary.FileWriter(train_log_dir,sess.graph)
    writer_test = tf.summary.FileWriter(test_log_dir)    # 注意此处不需要sess.graph
    ...other code...
    writer_train.add_summary(summary_str_train,step)
    writer_test.add_summary(summary_str_test,step)

此处贴一个使用mnist测试的图片,如图所示,在左下角可以通过testtrain的选项卡选择查看哪条曲线。
mnist图片

<think>我们被要求使用TensorBoard可视化训练曲线。根据引用[3],我们可以使用SummaryWriter来记录训练过程中的lossaccuracy等指标,并使用add_scalar或add_scalars方法。步骤:1.导入SummaryWriter2.实例化SummaryWriter,指定日志目录3.在训练循环中,使用writer.add_scalar或writer.add_scalars记录指标4.启动TensorBoard服务器查看可视化结果下面给出一个示例代码,说明如何记录训练损失、测试损失以及准确率,并可视化。</think> 我将详细介绍如何在PyTorch中使用TensorBoard可视化训练曲线,包括完整的代码实现操作步骤。 ### PyTorch TensorBoard可视化训练曲线教程 在PyTorch中使用TensorBoard可视化训练曲线主要步骤如下: #### 1. 安装TensorBoard ```bash pip install tensorboard ``` #### 2. 代码实现 ```python from torch.utils.tensorboard import SummaryWriter # 初始化SummaryWriter writer = SummaryWriter(log_dir="./runs/experiment_1") # 日志保存路径 # 在训练循环中记录指标 for epoch in range(num_epochs): # ... 训练过程 ... # 记录训练损失准确率 writer.add_scalar('Loss/train', train_loss, epoch) writer.add_scalar('Accuracy/train', train_acc, epoch) # 记录验证损失准确率(在同一图表中对比) writer.add_scalars('Loss/compare', {'train': train_loss, 'val': val_loss}, epoch) writer.add_scalars('Accuracy/compare', {'train': train_acc, 'val': val_acc}, epoch) # 关闭writer writer.close() ``` #### 3. 启动TensorBoard服务 ```bash tensorboard --logdir=./runs ``` #### 4. 查看可视化结果 访问 `http://localhost:6006` 查看曲线 ### 关键API详解[^3] | 方法 | 功能 | 示例 | |------|------|------| | `add_scalar()` | 记录单值标量 | `writer.add_scalar('Loss/train', loss, epoch)` | | `add_scalars()` | 记录多个相关标量(同图表显示) | `writer.add_scalars('Loss', {'train': t_loss, 'val': v_loss}, epoch)` | ### 最佳实践 1. **目录管理**:为每个实验创建独立日志目录(如`./runs/exp1`, `./runs/exp2`) 2. **标签命名**:使用`父类/子类`格式(如`Loss/train`) 3. **动态缩放**:点击图表右上角齿轮图标调整坐标轴范围 4. **对比实验**:在TensorBoard界面选择多个运行结果进行对比 ### 常见问题解决 - **无数据显示**:检查日志路径是否正确匹配`--logdir`参数 - **曲线不更新**:确保在训练循环中调用`flush()`或定期关闭程序 - **内存占用高**:使用`flush_secs=60`参数设置刷新间隔 通过TensorBoard的可视化,研究人员可以直观理解模型训练动态[^1],快速识别过拟合/欠拟合问题[^2],从而优化超参数选择。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值