PyTorch中的优化器

SDG优化器

参数说明:(引用:https://developer.baidu.com/article/detail.html?id=2705103)

  • 学习率(Learning Rate):学习率决定了模型权重更新的步长。较大的学习率可能导致模型训练不稳定,而较小的学习率可能导致训练速度缓慢。通常,你可以通过尝试不同的学习率来找到最佳值。默认情况下,学习率是1.0。你可以使用lr参数来设置学习率,例如:
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
  • 动量(Momentum):动量是一个加速SGD优化过程的参数。它利用了之前梯度的信息来加速权重更新。当沿着相同的方向更新时,动量可以增加权重更新的步长;当沿相反方向更新时,动量可以减小权重更新的步长。默认情况下,动量是0。你可以使用momentum参数来设置动量,例如:
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
  • 权重衰减(Weight Decay):权重衰减是一种正则化技术,通过在损失函数中添加一个正则项来减少过拟合。它通过对权重参数应用小的衰减因子来实现。默认情况下,权重衰减是0。你可以使用weight_decay参数来设置权重衰减,例如:
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, weight_decay=0.001)
  • Nesterov 动量(Nesterov Momentum):Nesterov 动量是传统动量的一种变体。在更新权重之前,它会先计算传统的动量值,然后再根据这个动量值进行权重更新。默认情况下,Nesterov 动量为False。你可以使用nesterov参数来启用或禁用 Nesterov 动量,例如:
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9, nesterov=True)
  • 除了上述参数之外,你还可以通过param_groups参数将参数分组,以便对不同的参数组设置不同的超参数。例如:
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
optimizer.add_param_group({'momentum': 0.8})  # 创建第二个参数组,并设置动量为0.8
posted @ 2024-04-23 17:18  Jnetart  阅读(21)  评论(0编辑  收藏  举报