前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >探索不同学习率对训练精度和Loss的影响

探索不同学习率对训练精度和Loss的影响

作者头像
算法与编程之美
发布2023-08-22 14:23:11
2900
发布2023-08-22 14:23:11
举报
文章被收录于专栏:算法与编程之美

验证精度、验证Loss的影响

1 问题

在探索mnist数据集过程中,学习率的不同,对我们的实验结果,各种参数数值的改变有何变化,有何不同。

学习率对精度和损失的影响研究。 训练周期=100 学习率= [0.1, 0.01, 0.001, 0.0001] (1) 不同学习率下的训练精度曲线; (2) 不同学习率下的训练Loss曲线; (3) 不同学习率下的验证精度曲线; (4) 不同学习率下的验证Loss曲线;

2 方法

在前面的学习过程中,我们已经完成了固定学习率lr=0.001情况下,训练精度,验证精度,训练loss,验证loss的结果,所以说我们只需要加一个循环,通过遍历学习率列表:lrs = [0.1, 0.01, 0.001, 0.0001],用列表来保存数据结果就行,在最后通过可视化matlibplot,来展示结果。

新增的代码(学习率的遍历,画图):

lrs = [0.1, 0.01, 0.001, 0.0001]for i in range(len(lrs)): optimizer=torch.optim.SGD(net.parameters(), lr=lrs[i],momentum=0.5)lens = len(Train_Acc_list)b = int(lens/4)plt.subplot(2,2,1)plt.plot(list(range(1,101)), Train_Acc_list[:b], color='red')plt.plot(list(range(1,101)),Train_Acc_list[b:2*b],color='blue')plt.plot(list(range(1,101)), Train_Acc_list[2*b:3*b], color='yellow')plt.plot(list(range(1,101)), Train_Acc_list[3*b:], color='green')plt.xlabel('epoch',size=18)plt.ylabel('Accuracy',size=18)plt.title('不同学习率下的训练精度曲线',size=20)plt.legend(labels=['lr=0.1','lr=0.01','lr=0.001','lr=0.0001'])plt.subplot(2, 2, 2)plt.plot(list(range(1, 101)), Train_loss_list[:b], color='red')plt.plot(list(range(1, 101)), Train_loss_list[b:2 * b], color='blue')plt.plot(list(range(1, 101)), Train_loss_list[2 * b:3 * b], color='yellow')plt.plot(list(range(1, 101)), Train_loss_list[3 * b:], color='green')plt.xlabel('epoch', size=18)plt.ylabel('Loss', size=18)plt.title('不同学习率下的训练Loss曲线', size=20)plt.legend(labels=['lr=0.1', 'lr=0.01', 'lr=0.001', 'lr=0.0001'])plt.subplot(2, 2, 3)plt.plot(list(range(1, 101)), Val_Acc_list[:b], color='red')plt.plot(list(range(1, 101)), Val_Acc_list[b:2 * b], color='blue')plt.plot(list(range(1, 101)), Val_Acc_list[2 * b:3 * b], color='yellow')plt.plot(list(range(1, 101)), Val_Acc_list[3 * b:], color='green')plt.xlabel('epoch', size=18)plt.ylabel('Accuracy', size=18)plt.title('不同学习率下的验证精度曲线', size=20)plt.legend(labels=['lr=0.1', 'lr=0.01', 'lr=0.001', 'lr=0.0001'])plt.subplot(2, 2, 4)plt.plot(list(range(1, 101)), Val_loss_list[:b], color='red')plt.plot(list(range(1, 101)), Val_loss_list[b:2 * b], color='blue')plt.plot(list(range(1, 101)), Val_loss_list[2 * b:3 * b], color='yellow')plt.plot(list(range(1, 101)), Val_loss_list[3 * b:], color='green')plt.xlabel('epoch', size=18)plt.ylabel('Loss', size=18)plt.title('不同学习率下的验证Loss曲线', size=20)plt.legend(labels=['lr=0.1', 'lr=0.01', 'lr=0.001', 'lr=0.0001'])plt.show()plt.savefig('pic.svg')

运行结果图:

3 结语

根据最后的可视化展示图可以清晰地看到:

  1. 在学习率为0.1的时候,相较于学习率为0.01、0.001、0.0001,训练精度都是较差的,特别是在训练次数相对于较少时,而且在第二张训练Loss曲线中,训练次数较少时, Loss较大,在第三张图也能明显看出,验证精度曲线,学习率为0.1的曲线变化较大,且精度不是很高,在第四张图上,Loss变化较大,且基本比其他三条线高
  2. 从第一张图上来看,学习率为0.01、0.001、0.0001时,精度基本上维持在94%左右,第二张图来看,Loss也基本相差不大。 在第三张图上的验证精度曲线,学习率为0.0001情况下,随着训练次数的增加,精度基本不变,训练精度为0.001情况下,精度随训练次数的增加有少浮的上下移动。 在第四张图上来看,学习率为0.001、0.0001情况下,验证Loss随训练次数的变化,基本保存一致。
  3. 综上所述,学习率为0.001、0.0001的情况下,各项指标的精度较高,Loss较低,更加稳定。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 验证精度、验证Loss的影响
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档