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

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")

按照我上述的流程最终绘制处理的图片为
准确率\损失率

希望我的分享可以对大家后期的学习起到帮助,可以及时的调整参数,得到更好的模型。

PyTorch训练模型时,可以使用TensorBoard或Matplotlib来绘制损失曲线准确率曲线。 ## 使用TensorBoard绘制曲线 TensorBoard是一个用于可视化机器学习实验结果的工具,可以用来展示训练过程中的损失曲线准确率曲线。以下是一个简单的示例代码,展示如何在PyTorch中使用TensorBoard来记录可视化训练过程中的损失准确率: ```python from torch.utils.tensorboard import SummaryWriter # 创建一个SummaryWriter对象,参数log_dir指定TensorBoard日志的存储路径 writer = SummaryWriter(log_dir='logs') for epoch in range(num_epochs): # ... # 记录训练损失准确率 writer.add_scalar('Train/Loss', train_loss, global_step=epoch) writer.add_scalar('Train/Accuracy', train_acc, global_step=epoch) # 记录验证损失准确率 writer.add_scalar('Val/Loss', val_loss, global_step=epoch) writer.add_scalar('Val/Accuracy', val_acc, global_step=epoch) # 关闭SummaryWriter对象 writer.close() ``` 在上面的示例代码中,首先需要创建一个`SummaryWriter`对象,并指定TensorBoard日志的存储路径。然后在每个epoch结束时,使用`add_scalar`方法记录训练损失、训练准确率、验证损失验证准确率。最后,在训练过程结束时,需要调用`close`方法关闭`SummaryWriter`对象。 ## 使用Matplotlib绘制曲线 除了使用TensorBoard,还可以使用Matplotlib来绘制损失曲线准确率曲线。以下是一个简单的示例代码,展示如何在PyTorch中使用Matplotlib来绘制损失曲线准确率曲线: ```python import matplotlib.pyplot as plt train_losses = [] train_accs = [] val_losses = [] val_accs = [] for epoch in range(num_epochs): # ... # 记录训练损失准确率 train_losses.append(train_loss) train_accs.append(train_acc) # 记录验证损失准确率 val_losses.append(val_loss) val_accs.append(val_acc) # 绘制训练验证损失曲线 plt.plot(train_losses, label='Train Loss') plt.plot(val_losses, label='Val Loss') plt.legend() plt.xlabel('Epoch') plt.ylabel('Loss') plt.show() # 绘制训练验证准确率曲线 plt.plot(train_accs, label='Train Acc') plt.plot(val_accs, label='Val Acc') plt.legend() plt.xlabel('Epoch') plt.ylabel('Accuracy') plt.show() ``` 在上面的示例代码中,首先定义了四个空列表来存储训练验证过程中的损失准确率。在每个epoch结束时,将训练验证的损失准确率记录到对应的列表中。最后,使用Matplotlib库绘制训练验证损失曲线训练验证准确率曲线
评论 68
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值