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表示按需求有外部设置调整学习率。具体参数如下:
- optimizer(Optimizer)optimizer(Optimizer)optimizer(Optimizer):优化器
- milestones(list)milestones(list)milestones(list):lrlrlr改变时的epoch数目
- gamma(float)gamma(float)gamma(float):学习率调整倍数,默认为0.10.10.1,即下降101010倍
- last_epoch(list)last\_epoch(list)last_epoch(list):从last_start开始后记录了多少个epochepochepoch,默认为−1-1−1
2.代码实例
假定优化器使用的学习率为lr=0.06lr = 0.06lr=0.06,在第40轮时候变成lr=0.006lr=0.006lr=0.006,在第100100100轮的时候变成lr=0.0006lr=0.0006lr=0.0006,具体的代码实例如下所示:
>>> scheduler = MultiStepLR(optimizer, milestones=[40,100], gamma=0.1)
>>> for epoch in range(100):
>>> train(...)
>>> validate(...)
>>> scheduler.step()
在指定的epochepochepoch值,如[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)