pytorch中調整學習率: torch.optim.lr_scheduler
torch.optim.lr_scheduler 中提供了基於多種epoch數目調整學習率的方法.
torch.optim.lr_scheduler.ReduceLROnPlateau :允許基於一些驗證測量對學習率進行動態的下降
----------------------------------------------------------------------------------------------------------------------
class torch.optim.lr_scheduler.LambdaLR(optimizer,lr_lambda,last_epoch=-1)
將每一個引數組的學習率設定為初始學習率lr的某個函式倍.當last_epoch=-1時,設定初始學習率為lr.
引數:
optimizer(Optimizer物件)--優化器
lr_lambda(是一個函式,或者列表(list))--
當是一個函式時,需要給其一個整數引數,使其計算出一個乘數因子,用於調整學習率,通常該輸入引數是epoch數目
或者是一組上面的函式組成的列表,
last_epoch(int型別):最後一次epoch的索引,預設為-1.
示例:
# 假設有兩組個引數組
lambda1 = lambda epoch:epoch // 30
lanbda2 = lambda epoch:0.95**epoch
scheduler = LambdaLR(optimizer,lr_lambda=[lambdda1,lambda2])
for epoch in range(100):
scheduler.step()
train(...)
validate(...)
--------------------------------------------------------------------------------------------------------------------
class torch.optim.lr_scheduler.StepLR(optimizer,step_size,gamma=0.1,last_epoch=-1)
設定每個引數組的學習率為, ,當last_epoch=-1時,令lr=lr
引數:
optimizer(Optimizer物件)--優化器
step_size(整數型別): 調整學習率的步長,每過step_size次,更新一次學習率
gamma(float 型別):學習率下降的乘數因子
last_epoch(int型別):最後一次epoch的索引,預設為-1.
示例:
>>> # 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):
>>> scheduler.step()
>>> train(...)
>>> validate(...)
-----------------------------------------------------------------------------------------------------------------------------------------------
..................