pytorch中动态调整学习率的函数:torch.optim.lr_scheduler.MultiStepLR()
例如:
milestones= [50,70]
torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones, gamma=0.1, last_epoch=-1)
说明:
1)milestones为一个数组,如 [50,70];
2)gamma为倍数,如果learning rate开始为0.01 ,则当epoch为50时变为0.001,epoch 为70 时变为0.0001。
3)当last_epoch=-1,设定为初始lr。
使用示例:
opti = torch.optim.Adam(model.parameters(), lr=LR) #动态调整学习率 drop_after_epoch = [3, 5, 7] scheduler = optim.lr_scheduler.MultiStepLR(opti, milestones=drop_after_epoch, gamma=0.333, last_epoch=-1) for epoch in range(10): train(...) val_acc = validate(...) #注意,降低学习率需要在给出 val_acc 之后 scheduler.step(val_acc)
还有其他一些调整学习率的函数,具体可在同一个文件中查看。