知其然更要知其所以然。
PyTorch是一个支持自动微分(autograd)以及多种硬件设备(CPU、CUDA)的计算库。
程序的两要素是数据和操作,因此,对PyTorch的源码解析同样聚焦在数据和操作上,PyTorch中重要的数据是Tensor,而操作可以分为前向操作以及反向操作,前向操作计算操作的结果,反向操作更新参数。另外,就Tensor而的数据类型而言就有多种,例如float、double、int等,其中又分是在CPU还是CUDA上的数据,因此,Tensor的数据类别是很多的,在这种情况下,PyTorch采用的是分发机制调用具体类型对应的实现。
因此,本专栏主要从Tensor的创建、分发机制的实现以及自动微分的角度解析PyTorch,当然,也许会介绍更多PyTorch模块,例如Module模块,Optim模块,Dataloader模块等,其中Module模块是建立神经网络的基础,Optim模块用于参数的更新(当然,参数的梯度是通过自动微分计算得出的),Dataloader用于加载数据。
本专栏将以文字、图、视频等形式解析源码,以便更清晰和直观的分析源码。