loss.backward() 与模型的适当参数有何关系?

zaf*_*rya 5 machine-learning deep-learning pytorch

我是 PyTorch 的新手,我无法理解如何loss知道通过 计算梯度loss.backward()

当然,我知道参数需要具有,requires_grad=True并且我知道它设置x.grad为适当的梯度只是为了优化器稍后执行梯度更新。

优化器在实例化时链接到模型参数,但损失永远不会链接到模型。

我一直在浏览这个线程,但我认为没有人清楚地回答它,并且发起该线程的人似乎与我有同样的问题。

当我有两个不同的网络、两个不同的损失函数和两个不同的优化器时会发生什么。我可以轻松地将优化器链接到每个网络,但是如果我从不将它们链接在一起,损失函数如何知道如何计算每个适当网络的梯度?

Vim*_*lak 0

这个问题似乎很笼统,所以我只能提供建议来帮助您入门(我希望):

  • 绘制图表以了解数据在计算图中的流动方式
  • 查看 torch.autograd 文档,了解框架如何记录它将用于计算梯度(“向后”)的所有操作https://pytorch.org/docs/stable/autograd.html
  • 您可以使用钩子(Python 3 + PyTorch 提供)来计算梯度值。它还应该让您了解梯度在图表中如何流动,您可以发布图表的图表,以便获得具体的答案吗?

如果以上没有回答您的问题,我要求您用示例代码来澄清您的问题