PyTorch Autograd自动微分功能

moh*_*0_0 4 python machine-learning computer-vision pytorch

我很想知道,PyTorch如何在张量上跟踪操作(在.requires_grad设置之后True以及如何自动计算渐变之后.请帮助我理解背后的想法autograd.谢谢.

den*_*ger 6

这是一个很好的问题!通常,自动微分(AutoDiff)的思想是基于多变量链规则,即 \ frac {\ partial x} {\ partial z} =\frac {\ partial x} {\ partial y}\cdot\frac {\ partial y} {\ partial z} .
这意味着您可以通过"代理"变量y表示x相对于z的导数; 实际上,这允许您在一堆更简单(或原子)的操作中分解几乎任何操作,然后可以将它们"链接"在一起.
现在,AutoDiffAutograddo这样的包只是存储这种原子操作块的衍生物,例如,除法,乘法等.然后,在运行时,你提供的前向通道公式(由多个这些块组成)可以很容易变成了一个精确的衍生物.同样,如果您认为AutoDiff不能完全按照您的意愿行事,您也可以为自己的运营提供衍生产品.

AutoDiff优于衍生近似(如有限差分)的优势在于,这是一个精确的解决方案.

如果您对内部工作方式更感兴趣,我强烈推荐AutoDidact项目,该项目旨在简化自动差分器的内部,因为通常还涉及很多代码优化.此外,我参加的一个讲座中的这组幻灯片对理解非常有帮助.