使用pytorch创建任意optimizer的一些重要步骤,首先如下所示:
optimizer = optim.SGD(model.parameters(), lr = 0.01)
创建了SGD优化器,把网络的所有学习参数作为第一个参数,另外一个参数是学习率,这决定了多大比例的变化调整可以作用于学习参数,这都是优化器的重要参数。
第一个注意点在创建优化器对象后,需要在循环中调用zero_grad()方法,这是为了避免参数把上一次optimizer调用时创建的梯度累加到一起:
for input, taget in dataset:
optimiter.zero_grad()
output = model(input)
loss = loss_fn(output,target)
loss.backward()
optimiter.step()
第二个注意点,再一次调用loss函数的backward方法,计算梯度值(学习参数需要改变的量),需要调用optimiter.step()方法,用于真正调整学习参数。