首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >loss.backward()与模型的适当参数有何关系?

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

Stack Overflow用户
提问于 2019-11-14 03:23:45
回答 2查看 1.3K关注 0票数 3

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

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

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

我一直在通过this thread,但我认为没有人清楚地回答了这个问题,这个帖子的发起人似乎和我有同样的问题。

当我有两个不同的网络,有两个不同的损失函数和两个不同的优化器时,会发生什么?我将很容易地将优化器链接到每个网络,但是如果我从来没有将它们链接在一起,那么损失函数如何知道如何计算每个适当网络的梯度呢?

EN

回答 2

Stack Overflow用户

发布于 2019-11-14 07:59:25

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

票数 1
EN

Stack Overflow用户

发布于 2019-11-14 03:35:55

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

  • 绘制图表以了解数据如何在您的计算图中流动
  • 查看torch.autograd文档,了解框架如何记录它将用于计算梯度的所有操作(“向后”)Python3+PyTorch可以使用钩子(在Python3+PyTorch中可用)来计算渐变值。它还应该让您了解梯度在您的图形中是如何流动的。您可以发布图形的图形,以便获得具体的答案吗?

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58844168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档