1. 程式人生 > >pytorch中調整學習率: torch.optim.lr_scheduler

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)

設定每個引數組的學習率為lr *\lambda ^{n},    n=\frac{epoch}{step\_size}      ,當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(...)

-----------------------------------------------------------------------------------------------------------------------------------------------

..................