个人技术分享

  • 【方法一:ReduceLROnPlateau】当设定指标在最近几个epoch中都没有变化时,调整学习率。

    optimizer = torch.optim.SGD(net.parameters(), lr=learning_rate, weight_decay=0.01)
    scheduler = torch.optim.lr_sheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.1, patience=10)
    scheduler.step(设定指标)  ## 判断一次是否更新				 						 
    

    主要参数:

    • mode:min 或 max
      • min:表示当指标 patience 个 epoch 都不再降低 ,max:都不再升高
    • patience: 忍受多少个 epoch 不变化,再调整 learning rate
    • factor: 学习率调整倍数,需要调整时,lr *= factor

  • 【方法二:StepLR】每 n=step_size 轮,调整学习率

    scheduler = torch.optim.lr_sheduler.StepLR(optimizer, step_size=30, gamma=0.1)
    

    主要参数:

    • step_size: 等待多少 epoch,再调整 learning rate
    • gamma: 学习率调整倍数,需要调整时,lr *= gamma