pytorch 架构结构分析
Pytorch是一个基于Torch框架的,开源的Python深度学习库。Torch框架一开始是不支持Python的,后来成功把Torch移植到python上,所以叫它Pytorch。
Torch是一个科学计算框架,广泛支持将GPU放在首位的机器学习算法。
pytorch 架构图
1. 数据存储层:管理数据存储和内存分配,Tensor在整个计算图中流动并执行操作
- Tensor(张量): PyTorch中最基础的数据结构,类似于NumPy的数组,但支持GPU加速。Tensor可以存储各种类型的多维数组,并且可以在CPU和GPU之间快速转换。
- Storage: 是Tensor底层的实现,用来管理实际存储的内存。Storage是低层次的,用于分配内存,而Tensor则是更高层的接口。
2. 网络搭建层:负责网络的搭建,定义了神经网络的结构、层的堆叠方式以及初始化参数等
- init: 用于初始化模型的参数,比如权重和偏置。可以自定义初始化策略,确保网络的训练效果。
- Parameter: Parameter类是特殊的Tensor,当被赋予nn.Module时,它会自动被注册为可学习的参数(即在反向传播时被更新的权重)。
- nn.Container: nn.Module的容器类,帮助组织网络中的多个层,比如nn.Sequential。
- Module/Sequential: nn.Module是PyTorch中所有神经网络层的基类,可以被继承来创建自定义模型。nn.Sequential是容器类,用于按顺序将多个层组合起来。
- Functional: torch.nn.functional提供了许多函数,比如激活函数、卷积操作等。相比于nn.Module中的层,functional提供了操作符的直接调用,而不需要保存状态。
- 网络模型: PyTorch提供了多种现成的网络模块,例如nn.RNN、nn.LSTM等。这些都是常见的神经网络模型,用户可以直接使用或者进行扩展。
3. 优化层:负责计算梯度并进行参数更新,自动微分功能显著简化了深度学习的反向传播实现
- optim: 这一模块包含了PyTorch中各种优化器(如SGD、Adam等),它们根据损失函数的梯度对模型参数进行更新,帮助模型逼近最优解。
- Autograd: PyTorch的自动微分模块,能够自动计算所有操作的梯度。它通过动态计算图记录每次操作,允许模型在每次前向传播中动态构建和反向传播。
4. 应用层:对数据的加载