深度学习中的优化器有哪些特点?

摘要:反向传播可以求出神经网路中每个需要调节参数的梯度,优化器可以根据梯度进行调整,达到降低整体误差的作用。本节我们对优化器进行介绍。
反向传播可以求出神经网路中每个需要调节参数的梯度(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()对每个参数的梯度进行清零,防止上一轮循环中计算出来的梯度影响下一轮循环。
阅读全文