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

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

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

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

我一直在研究this thread,但是我认为没有人回答清楚,启动线程的人似乎和我有同样的问题。

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

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

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

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

如果以上内容未能回答您的问题,请您通过示例代码澄清您的问题

,

损失本身就是从网络参数得出的张量。图是隐式构造的,其中每个新的张量(包括损失)都指向与其构造有关的张量。当您应用loss.backward()时,pytorch向后跟随该图,并使用链规则(即反向传播)向每个张量的.grad成员填充相对于该张量的部分损失递减

本文链接:https://www.f2er.com/3107310.html

大家都在问