pytorch模型优化简介,未完结版

如有帮助,点赞收藏关注!
如需转载,请注明出处!

今天来介绍torch模型中的优化器

优化是指在每个训练步骤中调整模型参数以减少模型误差的过程。

优化算法定义如何执行这个过程
所有优化逻辑都封装在优化器对象中。在这里,我们使用SGD优化器;此外,PyTorch中还有许多不同的优化器,如adam和RMSProp,它们可以更好地处理不同类型的模型和数据。

复杂代码被封装在优化器里,我们调用的时候只需要给出简单参数和优化器名称即可。真正起作用的就是这些很简短的语句。

随机梯度下降法(SGD)

一般指的mini-batch gradient descent
每一次迭代计算mini-batch的梯度,然后对参数进行更新,是最常见的优化方法。
缺点1:SGD容易收敛到局部最优,并且在某些情况下可能被困在鞍点。
缺点2:选择合适的learning rate比较困难 - 对所有的参数更新使用同样的learning rate。对
于稀疏数据或者特征,有时我们可能想更新快一些对于不经常出现的特征,对于常出现的特征
更新慢一些,这时候SGD就不太能满足要求了

#初始化
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
...
#循环loop中:
#重置模型参数的梯度。默认是累加,为了防止重复计数,在每次迭代时显式地将它们归零。
optimizer.zero_grad()
#计算梯度
loss.backward()
#根据上面计算的梯度,调整参数
optimizer.step()

RMSprop

是一种自适应学习率的优化算法,在更新参数时根据历史梯度平方的加权平均来动态调整每个参数的学习率。在PyTorch中,可以通过设置optim.RMSprop()来使用该优化器。

optimizer = torch.optim.RMSprop(model.parameters(), lr=learning_rate)

adam

是一种融合了动量梯度下降和自适应学习率的优化算法,在更新参数时既考虑历史梯度的加权平均又考虑历史梯度平方的加权平均。在PyTorch中,可以通过设置optim.Adam()来使用该优化器。

optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)

Momentum Gradient Descent

动量梯度下降是一种在梯度下降更新过程中加入动量项的优化算法,可以加速收敛并减少震荡。在PyTorch中,可以通过设置momentum参数实现动量梯度下降。

optimizer = torch.optim.RMSprop(model.parameters(), lr=learning_rate, momentum=momentum)

AdaGrad

是一种自适应学习率的优化算法,在更新参数时根据历史梯度信息来动态调整每个参数的学习率。在PyTorch中,可以通过设置optim.Adagrad()来使用该优化器。

optimizer = torch.optim.Adagrad(model.parameters(), lr=learning_rate)

AdamW

是一种基于Adam优化算法的变体,它引入了权重衰减(weight decay)来解决Adam可能存在的参数过度拟合问题。在PyTorch中,可以通过设置optim.AdamW()来使用该优化器。

optimizer = torch.optim.AdamW(model.parameters(), lr=learning_rate)

Adadelta

是一种自适应学习率的优化算法,它与RMSprop相似,但引入了一个衰减系数来平衡历史梯度平方和目标函数变化量。在PyTorch中,可以通过设置optim.Adadelta()来使用该优化器。

optimizer = torch.optim.Adadelta(model.parameters(), lr=learning_rate)

有时间再一一整理同样数据开启了不同优化器的效果。
看到这里了,给个鼓励。谢谢啦!

你可能感兴趣的:(计算机视觉,python,pytorch,人工智能,python)