Pythorch自动微分功能

2024-04-24 20:58:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是想知道,PyTorch如何跟踪张量上的操作(在.requires_grad设置为True之后)以及它如何自动计算梯度。请帮助我理解autograd背后的想法。谢谢。在


Tags: truepytorch梯度requiresgradautograd
1条回答
网友
1楼 · 发布于 2024-04-24 20:58:22

这是个好问题! 通常,自动微分(AutoDiff)的思想是基于多变量链规则,即。 \frac{\partial x}{\partial z} = \frac{\partial x}{\partial y}\cdot \frac{\partial y}{\partial z} .
这意味着您可以通过一个“代理”变量y来表示x相对于z的导数;事实上,这允许您将几乎任何操作分解为一组更简单(或原子)的操作,然后将这些操作“链接”在一起。
现在,像Autograd这样的AutoDiff包所做的仅仅是存储这样一个原子操作块的导数,例如除法、乘法等。 然后,在运行时,您提供的前向传递公式(由多个这样的块组成)可以很容易地转换为精确的导数。同样,如果您认为AutoDiff并没有完全按照您的要求进行操作,您也可以为自己的操作提供衍生工具。在

与导数近似(如finite differences)相比,AutoDiff的优点很简单,这是一个精确的解决方案。在

如果您对它的内部工作方式更感兴趣,我强烈推荐AutoDidact project,它的目的是简化自动微分器的内部结构,因为通常还涉及很多代码优化。 另外,我从一次演讲中得到的这个set of slides对理解非常有帮助。在

相关问题 更多 >