官方文档如下:
torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)
Parameters:
optimizer(Optimizer) – Wrapped optimizer.
step_size(int) – Period of learning rate decay.
gamma(float) – Multiplicative factor of learning rate decay. Default: 0.1.
last_epoch(int) – The index of last epoch. Default: -1.
常用参数:
optimizer:优化器
step_size:学习率衰减周期
gamma:学习率衰减乘子
那么具体是如何进行学习率更新的呢?官网给出了一个example:
>>> # Assuming optimizer uses lr = 0.05 for all groups
>>> # lr = 0.05 if epoch < 30
>>> # lr = 0.005 if 30 <= epoch < 60
>>> # lr = 0.0005 if 60 <= epoch < 90
>>> # ...
>>> scheduler = StepLR(optimizer, step_size=30, gamma=0.1)
>>> for epoch in range(100):
>>> train(...)
>>> validate(...)
>>> scheduler.step()
即在训练的过程中,每step_size次更新一次学习率,那么lr_new=lr * gamma
,lr_new
是新的学习率,lr
是旧的学习率,gamma是衰减乘子。