pytorch

  • Post author:
  • Post category:其他




什么是pytorch

在这里插入图片描述



PyTorch是一个提供两个高级功能的python包:

具有强GPU加速度的张量计算(如numpy)

深层神经网络建立在基于磁带的自动调整系统上

您可以重用您最喜爱的python软件包,如numpy,scipy和Cython,以便在需要时扩展PyTorch。



PyTorch在细粒度级别是由以下组件组成的库:

包 描述

torch 像NumPy这样的Tensor图书馆,拥有强大的GPU支持

torch.autograd 一种基于磁带的自动分类库,支持所有可区分的Tensor操作手电筒

torch.nn 一个神经网络库与autograd设计了最大的灵活性torch.optim 一种与torch.nn一起使用的优化包,具有标准优化方法,如SGD,RMSProp,LBFGS,Adam等。

torch.multiprocessing python多处理,但是具有魔法内存共享的手电筒传感器跨过程。适用于数据加载和hogwild培训。torch.utils DataLoader,Trainer等实用功能为方便起见

torch.legacy(.nn / .optim) 由于向后兼容性原因,已经从割炬移植的旧代码

通常使用PyTorch可以:

使用GPU的功能代替numpy。 一个深刻的学习研究平台,提供最大的灵活性和速度

进一步阐述:

GPU准备好的Tensor库

如果你使用numpy,那么你已经使用了Tensors(aka ndarray)。 GPU准备好的Tensor库

在这里插入图片描述

PyTorch提供可以在CPU或GPU上生活的Tensors,并加速计算量。

我们提供各种各样的张量程序,以加速和适应您的科学计算需求,如切片,索引,数学运算,线性代数,缩减。他们快!



动态神经网络:基于磁带的自动格式

PyTorch具有构建神经网络的独特方式:使用和重放磁带录音机。

大多数框架,比如请输入代码TensorFlow,Theano,Caffe和CNTK拥有世界的静态视图。必须建立一个神经网络,并重复使用相同的结构。改变网络的行为方式意味着必须从头开始。

使用PyTorch,我们使用一种称为反向模式自动分化的技术,它允许您以零延迟或开销改变网络的任意运行方式。我们的灵感来自于在这个题目的几个研究论文,以及当前和过去的工作,如 autograd, autograd, Chainer等。

虽然这种技术并不是PyTorch所特有的,但它是迄今为止最快的实现之一。您可以为您的疯狂研究获得最佳的速度和灵活性。

在这里插入图片描述



Python第一

PyTorch不是一个Python绑定到一个单一的C ++框架。它被构建为深入整合到Python中。您可以自然地使用它,就像您将使用numpy / scipy / scikit学习等。您可以使用自己喜欢的库并使用Cython和Numba等软件包,在Python本身编写新的神经网络层。我们的目标是不要在适当的时候重塑轮子。



势在必得的经验

PyTorch的设计是直观的,线性的思想和易于使用。当您执行一行代码时,它将被执行。没有一个异步的世界观。当您进入调试器或接收错误消息和堆栈跟踪时,理解它们是直接的。堆栈跟踪正好指向您的代码定义的位置。我们希望您不要花费几个小时来调试代码,因为堆栈跟踪错误或异步和不透明的执行引擎。



快速和精益

PyTorch具有最小的框架开销。我们集成加速库,如英特尔MKL和NVIDIA(CuDNN,NCCL),以最大限度地提高速度。核心是CPU和GPU Tensor和神经网络后端(TH,THC,THNN,THCUNN)都是用C99 API写成独立的库。 它们已经成熟,并已经过多年的测试。

因此,PyTorch相当快 – 无论您是运行小型或大型神经网络。

PyTorch的内存使用率与Torch或其他一些替代品相比非常有效。我们为GPU编写了自定义内存分配器,以确保您的深入学习模型具有最大的内存效率。这使您能够训练比以前更大的深入学习模型。



扩展没有痛苦

编写新的神经网络模块,或与PyTorch的Tensor API进行接口的设计是简单而且抽象最少的。

您可以使用torch API 或您喜欢的基于numpy的库(如SciPy)在Python中编写新的神经网络层

如果你想用C / C ++图层,我们根据一个扩展API CFFI是有效的,并以最小的样板。 没有需要编写的包装器代码



版权声明:本文为weixin_44122303原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。