前言
PyTorch是由一下几个部分组成的库:
torch:一个有强大GPU支撑的张量库,就像NumPy
torch.autograd:一个tape-based自动微分库,支持Torch内所有的可微的张量运算
torch.jit:一个编译缓存(Torchscript),用来从PyTorch代码中创建可串行的和可优化的模型
torch.nn:深度集成的神经网络库,具有最大自由度的自动求导设计
torch.multiprocessing:Python多进程,但是具有神奇的进程间torch张量的内存共享。常用于数据 加载和Hogwild训练
torch.utils:DataLoader和其他功能函数
一般的,PyTorch用于:
- 替代NumPy使用了强大的GPUs
- 深度学习研究平台,因为具有最大的自由度和速度
1. 一个GPU-Ready张量库
PyTorch提供的张量可以在CPU或GPU上,大大的加速计算
有多种张量惯例来提速,适应科学运算,如slicing,indexing,数学运算,线性代数,reduction。运算很快。
2. 动态神经网络:Tape-based自动求导
PyTorch在创建神经网络时有个特点即,使用和重放记录。
大多数框架如TensorFlow, Theano, Caffe, 和CNTK有个静态图。使用者需要创建一个神经网络,并且一遍遍的复用相同的结构。改变网络的形式意味着从头开始。
在PyTorch,使用的是所谓的反向的自动微分,这种方式允许使用者任意的改变其网络形式,零滞后和开销。其灵感来自于几篇相关话题的研究论文,以及当前和过去的工作如,torch-autograd,autograd,
3. 首先是Python
PyTorch是深度集成与Python。使用起来就像NumPy/SciPy/edcikit-learn等。可以在Python中写自己的神经网络层,使用自己习惯的包,如Cython和Numba。
4. 必要的实验
PyTorch设计的是直观、线性思维,使用简单。当运行一行代码,该代码则被执行。这与视觉上是同步的。当调试到一处发生错误信息和堆栈踪迹时,可以直观的理解。
5. 快速而简洁
PyTorch的框架开销小。集成有各种加速库来提升速度。CPU张量和GPU张量以及神经网络后端成熟。
6. 扩展简单
可直接写一个新的神经网络模型,或者与张量的API进行直接交互。



