PyTorch绘制训练过程的accuracy和loss曲线

原文链接:https://blog.csdn.net/tequilaro/article/details/81841748?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
PyTorch、Caffe绘制训练过程的accuracy和loss曲线
衡量模型的好坏其实最重要的看的就是准确率与损失率,所以将其进行可视化是一个非常重要的一步。这样就可以直观明了的看出模型训练过程中准确率以及损失率的变化。
因为博主一直是在caffe和pytorch进行深度学习研究的,之前查了相关资料发现caffe有相关的绘制方法,但是pytorch并没有找到,所以在这里进行总结。

Caffe
因为之前看到过有相关博主分享过类似的文章,所以直接附链接。
caffe绘制训练过程的loss和accuracy曲线
按照博主的分享我将自己的模型的准确率以及损失率进行了绘制,如下图所示
在这里插入图片描述
在这里插入图片描述
PyTorch
我这里主要分享pytorch的绘制方法。
主要思想就是首先要定义两个数组,然后将每次迭代时模型的准确率和损失率传入到数组中,这里可以利用拼接函数进行拼接。然后在利用绘制图像的函数将其绘制。

#定义两个数组
Loss_list = []
Accuracy_list = []

Loss_list.append(train_loss / (len(train_dataset)))
Accuracy_list.append(100 * train_acc / (len(train_dataset)))

#我这里迭代了200次,所以x的取值范围为(0,200),然后再将每次相对应的准确率以及损失率附在x上
x1 = range(0, 200)
x2 = range(0, 200)
y1 = Accuracy_list
y2 = Loss_list
plt.subplot(2, 1, 1)
plt.plot(x1, y1, ‘o-’)
plt.title(‘Test accuracy vs. epoches’)
plt.ylabel(‘Test accuracy’)
plt.subplot(2, 1, 2)
plt.plot(x2, y2, ‘.-’)
plt.xlabel(‘Test loss vs. epoches’)
plt.ylabel(‘Test loss’)
plt.show()
plt.savefig(“accuracy_loss.jpg”)
在这里插入图片描述

训练过程中,你可以通过将每个epoch损失(如主损失、辅助损失以及其他你关心的量)记录下来,生成一个折线图或柱状图来可视化训练进展。这种图表通常被称为训练曲线。以下是基本步骤: 1. **数据收集**:每次调用`train_one_epoch`后,记录下当前epoch号以及对应的三种主要损失(主损失、辅助损失和其他指标)。 ```python data_points = { "epoch": [], "main_loss": [], "aux_loss": [], # 添加其他你需要跟踪的指标,例如 "mse_loss" 或 "bpp_loss" } ``` 2. **处理训练日志**:每当训练完成一个epoch,从上述的日志信息中提取这些数,并添加到`data_points`字典中。 ```python for _ in range(num_epochs): data_points["epoch"].append(epoch) data_points["main_loss"].append(out_criterion["loss"].item()) data_points["aux_loss"].append(aux_loss.item()) # 如果有其他指标,也添加对应 ``` 3. **创建图表**:训练完成后,你可以使用Python的数据分析库如pandas和matplotlib来绘制曲线图。这里是一个简化的例子: ```python import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame(data_points) plt.figure(figsize=(10, 6)) plt.plot(df['epoch'], df['main_loss'], label='Main Loss') plt.plot(df['epoch'], df['aux_loss'], label='Auxiliary Loss') # 如果有更多指标,添加类似这一行 plt.plot(df['epoch'], df['mse_loss'], label='MSE Loss') plt.xlabel('Epochs') plt.ylabel('Loss') plt.title('Training Loss Curves') plt.legend() plt.show() ``` 这将生成一个显示各损失随时间变化趋势的图表,可以帮助你评估模型收敛情况以及优化策略的有效性。记得定期保存这些图表,以便于后续分析和调试。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值