如何在 PyTorch 中查找和理解 autograd 源代码
How to find and understand the autograd source code in PyTorch
我对autograd算法比较了解,我觉得应该学习一下PyTorch中的源码。但是,当我看到 GitHub 上的项目时,我对结构感到困惑,因为很多文件都包含 autograd。那么autograd最重要的核心代码是哪一部分呢?
尝试了解autograd variable可能是第一件事,你可以做什么。据我了解,autograd 只是模块的命名,其中包含 类 以及增强的梯度和反向函数。
注意很多算法,例如通过图形的反向传播隐藏在编译代码中。
如果您查看 __init__.py,您可以了解所有重要功能(向后和渐变)
我建议你将你对 autograd 的理解和所涉及的 PyTorch 数据结构联系起来,通过制作一个简单的图表和printing/visualizing结构如下:
- Print Autograd Graph
- Resnet example viz(jupyter 笔记本)
阅读 PyTorch 代码是可行的,但您可能会被细节淹没。要获得 autograd 的基本概念,您可能需要参考一些简单的 autograd 实现,例如 https://evcu.github.io/ml/autograd/ and https://medium.com/@ralphmao95/simple-autograd-implementation-understand-automatic-differentiation-hand-by-hand-9e86f6d703ab
我对autograd算法比较了解,我觉得应该学习一下PyTorch中的源码。但是,当我看到 GitHub 上的项目时,我对结构感到困惑,因为很多文件都包含 autograd。那么autograd最重要的核心代码是哪一部分呢?
尝试了解autograd variable可能是第一件事,你可以做什么。据我了解,autograd 只是模块的命名,其中包含 类 以及增强的梯度和反向函数。
注意很多算法,例如通过图形的反向传播隐藏在编译代码中。
如果您查看 __init__.py,您可以了解所有重要功能(向后和渐变)
我建议你将你对 autograd 的理解和所涉及的 PyTorch 数据结构联系起来,通过制作一个简单的图表和printing/visualizing结构如下:
- Print Autograd Graph
- Resnet example viz(jupyter 笔记本)
阅读 PyTorch 代码是可行的,但您可能会被细节淹没。要获得 autograd 的基本概念,您可能需要参考一些简单的 autograd 实现,例如 https://evcu.github.io/ml/autograd/ and https://medium.com/@ralphmao95/simple-autograd-implementation-understand-automatic-differentiation-hand-by-hand-9e86f6d703ab