深度学习:优化器

0. 各种优化器介绍

参考这个博客: 各种优化器SGD,AdaGrad,Adam,LBFGS都做了什么?

1.优化器选择(优先选择以下三个)

1.0. 代码使用pytorch

1.1. SGD+Momentum

optimer = optim.SGD(model.parameters(), lr=0.1, weight_decay=0.2, momentum=0.9, nesterov=True)
  • weight_decay:L2正则化惩罚系数
  • momentum:惯性动量
  • nesterov:就是Nesterov Accelerated Gradient这个优化器,防止按照惯性走的太快,会衡量一下梯度做出修正
  • 以上超参数需要调参

1.2. Adam

optimer= optim.Adam(model.parameters(), lr=0.1, weight_decay=0)
  • 为不同参数产生自适应的学习速率
  • 没有L2正则化

1.3. AdamW(Adam+L2正则)

optimer = optim.AdamW(model.parameters(), lr=0.1, weight_decay=0.2)

2. 学习率更新

手动设置的学习率更新。用的比较少,可以结合SGD使用。

step1.设置一个动态学习率

optimer = optim.SGD(model.parameters(), lr=0.1, weight_decay=0.2, momentum=0.9, nesterov=True)
scheduler = optim.lr_scheduler.LinearLR(optimer , start_factor=1.0, end_factor=0.6, total_iters=5)

start_factor:开始的权重系数
end_factor:结束的权重系数
total_iters:迭代系数

step2.在更新模型参数的同时,更新学习率

optimer.step()
scheduler.step()

step3.学习率

  1. 0.1*1.0=0.1
  2. 0.1*0.9=0.09
  3. 0.1*0.8=0.08
  4. 0.1*0.7=0.07
  5. 0.1*0.6=0.06
  6. 0.06
  7. 0.06
  8. 不再改变
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42911863/article/details/126237999
今日推荐