[人工智能]深度学习框架

前言

摘抄自《深度学习之Pytorch》。算法

在深度学习初始阶段,每一个深度学习研究者都须要写大量的重复代码。为了提升工做效率,这些研究者就将这些代码写成了一个框架放到网上让全部研究者一块儿是用;接着网上就出现了不一样的框架。随着时间的推移,最为好用的几个框架被大量的人使用从而流行了起来,接下来介绍一下目前全世界最为流行的几大深度学习框架。编程

TensorFlow

首先介绍的是Google开源的TensorFlow,这是一款使用C++语言开发的开源数学计算软件,使用数据流图(Data Flow Graph)的形式进行计算。图中的节点表明数学运算,而图中的线条标识多维数据数组(tensor)之间的交互。TensorFlow灵活的架构能够部署在一个或多个CPU、GPU的台式及服务器中,或者使用单一的API应用在移动设备中。TensorFlow最初是由研究人员和Google Brain团队针对机器学习和深度神经网络进行研究而开发的,目前开源以后几乎能够在各类领域使用。数组

目前TensorFlow是全世界使用人数最多、社区最为庞大的一个框架,由于Google公司出品,全部维护和更新也比较频繁,而且有着Python和C++的接口,教程也很是完善。同时不少论文复现的第一个版本都是基于TensorFlow写的,因此是深度学习界框架默认的老大。服务器

因为其语言太过于底层,目前有不少基于TensorFlow的第三方抽象库将TensorFlow的函数进行封装,使其变得简洁。目前比较有名的几个是Keras、Tflearn、tfslim以及TensorLayer网络

Caffe

和TensorFlow名气同样大的是深度学习框架Caffe,由加州大学伯克利的Phd贾扬清开发,全称是Convolutional Architecture for Fast Feature Embedding,是一个清晰而高效的开源深度学习框架,目前由伯克利视觉学中心(Brekeley Vision and Learning Center)进行维护。架构

从其名字就能够看出它对卷积网络的支持特别好,同时也是用C++写的,可是并无提供Python接口,只提供C++的接口。框架

Caffe之因此流行,是由于以前不少ImageNet比赛里面使用的网络都是用Caffe写的,因此若是你想使用这些比赛里面的网络模型就只能使用Caffe,这也就致使了不少人直接转到Caffe这个框架下面。机器学习

Caffe的缺点是不够灵活,同时内存占用高,只提供C++接口。目前Caffe的升级版本Caffe2已经开源了,修复了一些问题,同时工程水平获得了进一步提供。编程语言

Theano

Theano于2008年诞生于蒙特利尔理工学院,其派生出来大量深度学习Python软件包,最著名的包括Blocks和Keras。Theano的核心是一个数学表达式的编译器,他知道如何获取你的结构,并使之成为一个使用numpy、高效本地库的高效代码,如BLAS和本地代码(C++),在CPU或GPU上尽量快地运行。它是为深度学习中处理大型神经网络算法所学的计算而专门设计的,是这类库的独创之一(发展始于2007年),被认为是深度学习研究和开发的行业标准。分布式

但目前开发Theano的研究人员大多去了Google参与TensorFlow的开发,因此从某种程度来说TensorFlow就像是Theano的孩子。

Torch

Torch是一个有大量机器学习算法支持的科学计算框架,其诞生已经有十年之久,但真正起势得益于Facebook开源了大量的Torch的深度学习模块和扩展。Torch的特色在于特别灵活,可是另一个特殊之处是采用Lua,在目前深度学习大部分以Python为编程语言的大环境之下,一个以Lua为编程语言的框架有着更多的劣势,这一小众语言增长了学习使用Torch这个框架的成本。

PyTorch的前身即是Torch,其底层和Torch框架同样,可是使用Python重写了不少内容,不只更加灵活,支持动态图,也提供了Python接口。

PyTorch

PyTorch是由Torch7团队开发的,从名字就能够看出,它跟Torch的不一样之处在于PyTorch使用了Python做为开发语言。所谓“Python first”,一样说明它是一个以Python优先的深度学习框架,不只可以实现强大的GPU加速,同时还支持动态神经网络,这是如今不少驻留框架好比TensorFlow等都不支持的。

PyTorch既能够看作加入了GPU支持的numpy,同时也能够当作一个拥有自动求导功能的强大的深度神经网络。

特色

PyTorch有如下特色:

  • 支持GPU
  • 动态神经网络
  • Python优先
  • 命令式体验
  • 轻松扩展

MXNet

MXNet的主要做者是李沐,最先就是几我的抱着纯粹对技术和开发的热情作起来的兴趣项目,现在成为了亚马逊的官方框架,有着很是好的分布式支持,并且性能特别好,占用显存低,同时其开发的语言接口不只仅有Python和C++,还有R、MATLAB、Scala、JavaScript等等,能够说可以知足使用任何语言的人。

但MXNet的缺点也很明显,教程不够完善,使用的人不够多致使社区不大,同时每一年不多有比赛和论文是基于MXNet实现的,这就使得MXNet的推广力度和知名度不高。

相关文章
相关标签/搜索