pytorch(1.1.0) StepLR 中 get_lr()方法的一个bug

pytorch中的StepLR实现时有一个小细节:
举例:
设置step_size=5,gamma=0.1时,
记初始学习率为lr,
实际上每次在第五个epoch学习率会先衰减为 lr * (gamma^2),
然后下一个epoch之后才是 lr * gamma.
猜测这种学习率的改变方式应该是为了在学习率衰减时更好的过渡?

————————————————————————

补充,经评论区提示,下面的情况实际是get_lr函数的一个bug。
在新版本pytorch中已修复。
详见这个issue!

————————————————————————
测试环境:
python 3.6.8
pytorch 1.1.0
测试代码如下:

import torch
from torch.optim.lr_scheduler import StepLR
model = torch.nn.Linear(5,10)
optim = torch.optim.SGD(model.parameters(), lr = 1)
scheduler = StepLR(optim,step_size=5 , gamma=0.1)
model.train()
for i in range(25):
    optim.step()
    scheduler.step()
    print(scheduler.get_lr()[0])

以上代码输出如下:

1
1
1
1
0.010000000000000002
0.1
0.1
0.1
0.1
0.0010000000000000002
0.010000000000000002
0.010000000000000002
0.010000000000000002
0.010000000000000002
0.00010000000000000003
0.0010000000000000002
0.0010000000000000002
0.0010000000000000002
0.0010000000000000002
1.0000000000000004e-05
0.00010000000000000003
0.00010000000000000003
0.00010000000000000003
0.00010000000000000003
1.0000000000000004e-06

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值