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
标签:optimizer,权重,PyTorch,参数,动量,lr,优化,SGD
From: https://www.cnblogs.com/shenxiaoyao/p/18153332