Pytorch中torch.optim.lr_scheduler.MultiStepLR
1.官方介绍 torch.optim.lr_scheduler.MultiStepLR表示按需求有外部设置调整学习率。具体参数如下:optimizer(Optimizer)optimizer(Optimizer)optimizer(Optimizer):优化器milestones(list)milestones(list)milestones(list):lr改变时的epoch数目gamma(f
1.官方介绍
torch.optim.lr_scheduler.MultiStepLR表示按需求有外部设置调整学习率。具体参数如下:
- o p t i m i z e r ( O p t i m i z e r ) optimizer(Optimizer) optimizer(Optimizer):优化器
- m i l e s t o n e s ( l i s t ) milestones(list) milestones(list): l r lr lr改变时的epoch数目
- g a m m a ( f l o a t ) gamma(float) gamma(float):学习率调整倍数,默认为 0.1 0.1 0.1,即下降 10 10 10倍
- l a s t _ e p o c h ( l i s t ) last\_epoch(list) last_epoch(list):从last_start开始后记录了多少个 e p o c h epoch epoch,默认为 − 1 -1 −1
2.代码实例
假定优化器使用的学习率为 l r = 0.06 lr = 0.06 lr=0.06,在第40轮时候变成 l r = 0.006 lr=0.006 lr=0.006,在第 100 100 100轮的时候变成 l r = 0.0006 lr=0.0006 lr=0.0006,具体的代码实例如下所示:
>>> scheduler = MultiStepLR(optimizer, milestones=[40,100], gamma=0.1)
>>> for epoch in range(100):
>>> train(...)
>>> validate(...)
>>> scheduler.step()
在指定的 e p o c h epoch epoch值,如 [ 5 , 20 , 25 , 80 ] [5,20,25,80] [5,20,25,80]处对学习率进行衰减完整的代码展示如下所示:
model = AlexNet(num_classes=2)
optimizer = optim.SGD(params = model.parameters(), lr=0.01)
scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[5,20,25,80], gamma=0.1)
plt.figure()
x = list(range(100))
y = []
for epoch in range(100):
scheduler.step()
lr = scheduler.get_lr()
print(epoch, scheduler.get_lr()[0])
y.append(scheduler.get_lr()[0])
plt.xlabel("epoch")
plt.ylabel("learning rate")
plt.plot(x,y)
更多推荐
所有评论(0)