1.stepLR:
这个调度器有2个重要的参数。第一个参数是步长,它表示学习率多少轮改变一次,第二个参数是gamma,它决定学习率必须改变多少。
scheduler = StepLR(optimizer,step_size = 30,gamma = 0.1)
for eroch in range(100):
scheduler.step()
train(...)
validate(...)
2.MultiStepLR:
scheduler = MultiStepLR(optimizer,milestones=[30,80],gamma=0.1)
for eroch in range(100):
scheduler.step()
train(...)
validate(...)
3. ExponentiaILR:
每一轮都将学习率乘上gamma值
4. ReduceLROnPlateau:
这是常用的学习率策略之一。应用本策略时,当特定的度量指标,如训练损失、验证损失或准确率不在变化时,学习率就会改变。通用实践是讲学习率的原始值降低为原来的1/2~1/10。
optimizer = torch.optim.SGD(model.parameters(),lr = 0.1,momentum=0.9)
scheduler = ReduceLROnPlateau(optimizer,'min')
for epoch in range(100):
train(...)
val_loss = validate(...)
scheduler.step(val_loss)