class_LRScheduler
主要方法
- step():更細你下一個epoch的學習率
- get_lr():虛函數,計算下一個epoch的學習率
學習率調整
1.StepLR 等間隔調整學習率
2.MultiStepLR 按給定間隔調整學習率
3.按照指數衰減調整學習率
4.CosineAnnealingLR
詭異的學習率
5.ReduceLRonPlateau
這個和keras的ReduceLearningRate很像
需要注意的是,在scheduler_lr的step方法中必須輸入要監控的值
scheduler_lr=optim.lr_scheduler.ReduceLROnPlateau(optimizer,factor=0.1,mode='min',patience=10,cooldown=10,min_lr=1e-4,verbose=True)
scheduler_lr.step(loss.val)
關於mode的說明,min表示觀察是否下降,max模式表示觀察是否上升,所以Min通常用來表示loss,max通常用來表示accuracy
6.LambdaLR
lambda1=lambda epoch:0.1**(epoch//20)
lambda2=lambda epoch:0.95** epoch
scheduler=torch.optim.lr_scheduler.LambdaLR(optimizer,lr_lambda=[lambda1,lambda2])
#在之後的訓練循環中執行
scheduler.step()
學習率調整小結
- 有序調節:Step,MultiStep,Exponential,CosineAnnealing
- 自適應調整:ReduceLROnPleatu
- 自定義調整:Lambda
搜索最大學習率