PyTroch,梯度计算

时间:2019-07-05 07:14:34

标签: pytorch gradient

https://colab.research.google.com/github/pytorch/tutorials/blob/gh-pages/_downloads/neural_networks_tutorial.ipynb

嗨,我想用pytorch来理解NN。 我对梯度计算有疑问。

将torch.optim导入为优化

create your optimizer
optimizer = optim.SGD(net.parameters(), lr=0.01)


```
# in your training loop:
optimizer.zero_grad()   # zero the gradient buffers
output = net(input)
loss = criterion(output, target)
loss.backward()
optimizer.step()    # Does the update
```

从about代码中,我了解了loss.backward()计算梯度。 我不确定这些信息如何与optimizer共享以更新渐变。

任何人都可以解释一下..

谢谢!

1 个答案:

答案 0 :(得分:2)

在此行中创建优化器时

optimizer = optim.SGD(net.parameters(), lr=0.01)

您为net.parameters()提供了所有可学习的参数,这些参数将基于渐变进行更新。

仅由于模型和优化器共享相同的参数,因此它们相互连接。

PyTorch参数是张量。它们不再称为变量。