2024-04-24 20:58:22 发布
网友
我只是想知道,PyTorch如何跟踪张量上的操作(在.requires_grad设置为True之后)以及它如何自动计算梯度。请帮助我理解autograd背后的想法。谢谢。在
.requires_grad
True
autograd
这是个好问题! 通常,自动微分(AutoDiff)的思想是基于多变量链规则,即。 . 这意味着您可以通过一个“代理”变量y来表示x相对于z的导数;事实上,这允许您将几乎任何操作分解为一组更简单(或原子)的操作,然后将这些操作“链接”在一起。 现在,像Autograd这样的AutoDiff包所做的仅仅是存储这样一个原子操作块的导数,例如除法、乘法等。 然后,在运行时,您提供的前向传递公式(由多个这样的块组成)可以很容易地转换为精确的导数。同样,如果您认为AutoDiff并没有完全按照您的要求进行操作,您也可以为自己的操作提供衍生工具。在
AutoDiff
Autograd
与导数近似(如finite differences)相比,AutoDiff的优点很简单,这是一个精确的解决方案。在
如果您对它的内部工作方式更感兴趣,我强烈推荐AutoDidact project,它的目的是简化自动微分器的内部结构,因为通常还涉及很多代码优化。 另外,我从一次演讲中得到的这个set of slides对理解非常有帮助。在
这是个好问题! 通常,自动微分(
AutoDiff
)的思想是基于多变量链规则,即。 .这意味着您可以通过一个“代理”变量y来表示x相对于z的导数;事实上,这允许您将几乎任何操作分解为一组更简单(或原子)的操作,然后将这些操作“链接”在一起。
现在,像
Autograd
这样的AutoDiff
包所做的仅仅是存储这样一个原子操作块的导数,例如除法、乘法等。 然后,在运行时,您提供的前向传递公式(由多个这样的块组成)可以很容易地转换为精确的导数。同样,如果您认为AutoDiff并没有完全按照您的要求进行操作,您也可以为自己的操作提供衍生工具。在与导数近似(如finite differences)相比,AutoDiff的优点很简单,这是一个精确的解决方案。在
如果您对它的内部工作方式更感兴趣,我强烈推荐AutoDidact project,它的目的是简化自动微分器的内部结构,因为通常还涉及很多代码优化。 另外,我从一次演讲中得到的这个set of slides对理解非常有帮助。在
相关问题 更多 >
编程相关推荐