嗨,我正在尝试用pytorch来理解神经网络。我对梯度计算有疑问..
将torch.optim作为选项导入
create your optimizer
optimizer = optim.SGD(net.parameters(), lr=0.01)
在你的训练循环中:
optimizer.zero_grad() #将渐变缓冲区清零
输出=net(输入)
损失=标准(输出,目标)
loss.backward()
optimizer.step() #执行更新
从关于代码中,我了解到loss.backward()计算渐变。我不确定,这些信息如何与optimizer
共享以更新渐变。
有没有人能解释一下..
提前感谢!
发布于 2019-07-05 17:42:09
当您在该行中创建优化器时
optimizer = optim.SGD(net.parameters(), lr=0.01)
您为net.parameters()
提供了所有可学习的参数,这些参数将根据渐变进行更新。
模型和优化器之所以连接在一起,只是因为它们共享相同的参数。
PyTorch参数是张量。它们不再被称为变量。
https://stackoverflow.com/questions/56898239
复制相似问题