学习率设置对于学习过程来说相当重要。学习率过低会导致学习速度太慢,学习率过高又容易导致难以收敛。在很多学习过程中,都会采用动态调整学习率的方法。刚开始训练的时候,学习率设置大一点,以加快学习速度;之后逐渐减小学习率,来寻找最优解。
那么在Pytorch中,如在训练过程中动态地调整学习率呢?
目录
优化器Optimizer
只训练模型的一部分参数
不同部分的参数设置不同的学习率(以及其他属性)
Optimizer基本属性
optimizer基本方法
动态更新learning rate
torch.optim.lr_scheduler
torch.optim.lr_scheduler.LambdaLr
torch.optim.lr_scheduler.StepLR
torch.optim.lr_scheduler.MultiStepLR
torch.optim.lr_scheduler.ExponentialLR
torch.optim.lr_scheduler.CosineAnnealingLR
torch.optim.lr_scheduler.ReduceLROnPlateau
手动修改lr
优化器Optimizer
在说学习率调整方法之前,先来了解一下Pytorch中的优化器Optimizer机制。
用过Pytorch的都知道,模型训练时的固定搭配。
简单来说,loss.backward()就是反向计算出各参数的梯度,然后optimizer.step()就是更新网络中的参数,optimizer.zero_grad()将这一轮的梯度清零,防止这一轮的梯度影响下一轮的更新。