深度学习中的优化器有哪些特点?
摘要:反向传播可以求出神经网路中每个需要调节参数的梯度,优化器可以根据梯度进行调整,达到降低整体误差的作用。本节我们对优化器进行介绍。
反向传播可以求出神经网路中每个需要调节参数的梯度(grad),优化器可以根据梯度进行调整,达到降低整体误差的作用。下面我们对优化器进行介绍。
1. 如何使用优化器
官方文档:torch.optim — PyTorch 2.0 documentation
(1)构造优化器
举个栗子:
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
optimizer = optim.Adam([var1, var2], lr=0.0001)
首先选择优化器的算法optim.SGD
之后在优化器中放入模型参数model.parameters(),这一步是必备的
还可在函数中设置一些参数,如学习速率lr=0.01(这是每个优化器中几乎都会有的参数)
(2)调用优化器中的step方法
step()方法就是利用我们之前获得的梯度,对神经网络中的参数进行更新。
举个栗子:
for input, target in dataset:
optimizer.zero_grad()
output = model(input)
loss = loss_fn(output, target)
loss.backward()
optimizer.step()
步骤optimizer.zero_grad()是必选的
我们的输入经过了模型,并得到了输出output
之后计算输出和target之间的误差loss
调用误差的反向传播loss.backwrd,更新每个参数对应的梯度。
调用optimizer.step()对卷积核中的参数进行优化调整。
之后继续进入for循环,使用函数optimizer.zero_grad()对每个参数的梯度进行清零,防止上一轮循环中计算出来的梯度影响下一轮循环。
