pytorch学习笔记十三:学习率的调整策略

pytroch中常见的学习率调整策略
摘要由CSDN通过智能技术生成

在上一节的优化器中有很多超参数,例如学习率和动量等,其中一个重要的参数是学习率,它控制着参数更新步伐的大小,在模型的训练过程中,学习率不是一成不变的,可以调整和变化。

一、为什么要调整学习率

在模型训练时,一般开始的时候会设置大一点的学习率,这样可以较快的达到最优点附近,然后降低学习率,缓慢的去收敛到最优值。举个栗子:
在这里插入图片描述
参数更新公式:
w i + 1 = w i − L R ∗ g r a d ( w i ) w_{i+1}=w_{i}-LR*grad(w_{i}) wi+1=wiLRgrad(wi)
如果设置过大的学习率,有可能会跳过最优值,或者在最优值附近震荡。所以设置学习率小一点,来达到最优值,这时就需要一个学习率调整策略来控制学习率。下面就来学习一下pytorch中学习率的调整策略。

二、pytorch中的学习率调整策略

1、StepLR

在这里插入图片描述
功能:等间隔调整学习率
step_size表示调整间隔数,gamma表示调整系数,调整方式就是lr*gamma,gamma一般是0.1-0.5,last_epoch保证能够从断点处继续训练。pytorch中的实现为:

if (self.last_epoch == 0) or (self.last_epoch % self.step_size != 0):
    return [group['lr'] for group in self.optimizer.param_groups]
return [group['lr'] * self.gamma
        for group in self.optimizer.param_groups]

可以发现通过当前epoch是否能够被整除来调整学习率。例如设置step_size=50,那么就是每50个epoch调整一次学习率,调整方式是lr*gamma,下面从代码来看一下这种学习率的调整策略:

# 设置每50个epoch调整学习率,lr=0.1*lr
scheduler_lr = optim.lr_scheduler.StepLR(optimizer, step_size=50, gamma=0.1)  # 设置学习率下降策略

lr_list, epoch_list = list(), list()
for
  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值