Pytorch|Pytorch 如何训练网络时调整学习率
为了得到更好的网络,学习率通常是要调整的,即刚开始用较大的学习率来加快网络的训练,之后为了提高精确度,需要将学习率调低一点。
如图所示,步长(学习率)太大容易跨过最优解。
文章图片
代码如下:
表示每20个epoch学习率调整为之前的10%
optimizer = optim.SGD(gan.parameters(), lr=0.1,momentum=0.9,weight_decay=0.0005)
lr = optimizer.param_groups[0]['lr'] * (0.1 ** (epoch // 20))for param_group in optimizer.param_groups:param_group['lr'] = lrprint(optimizer.param_groups[0]['lr'])
补充:Pytorch 在训练过程中实现学习率衰减
在网络的训练过程中,学习率是一个非常重要的超参数,它直接影响了网络的训练效果。
但过大的学习率将会导致网络无法达到局部最小点,使得训练结果震荡,准确率无法提升,而过小的学习率将会导致拟合速度过慢,浪费大量的时间和算力。
因此我们希望在训练之初能够有较大的学习率加快拟合的速率,之后降低学习率,使得网络能够更好的达到局部最小,提高网络的效率。
【Pytorch|Pytorch 如何训练网络时调整学习率】torch.optim.lr_scheduler.LambdaLR()
torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1)
其中optimizer就是包装好的优化器, lr_lambda即为操作学习率的函数。
将每个参数组的学习速率设置为初始的lr乘以一个给定的函数。
当last_epoch=-1时,将初始lr设置为lr。
torch.optim.lr_scheduler.StepLR()
torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)
其中optimizer就是包装好的优化器,step_size (int) 为学习率衰减期,指几个epoch衰减一次。gamma为学习率衰减的乘积因子。 默认为0.1 。当last_epoch=-1时,将初始lr设置为lr。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- java中如何实现重建二叉树
- Linux下面如何查看tomcat已经使用多少线程
- 绘本讲师训练营【24期】14/21阅读原创《小黑鱼》
- 绘本讲师训练营【18期】14/21《我的情绪小怪兽》故事会新体验