深度学习框架介绍

Tensorflow

        首先要介绍的当然是 Google 开源的TensorFlow,这是一款使用C++语言开发的开源数学计算软件,使用数据流图(Data Flow Graph)的形式进行计算。图中的节点代表数学运算,而图中的线条表示多维数据数组(tensor)之间的交互。TensorFlow灵活的架构可以部署在一个或多个CPU、GPU的台式及服务器中,或者使用单一的API应用在移动设备中。TensorFlow最初是由研究人员和GoogleBrain团队针对机器学习和深度神经网络进行研究而开发的,目前开源之后几乎可以在各种领域适用。
        目前 Tensorlow 是全世界使用人数最多、社区最为庞大的一个框架,因为Google公司出品,所以维护与更新也比较频繁,并且有着Python和C++的接口,教程也非常完善,同时很多论文复现的第一个版本都是基于Tensorflow写的,所以是深度学习界框架默认的老大。
        由于其语言太过于底层,目前有很多基于Tensordow的第三方抽象库将Tensorflow的函数进行封装,使其变得简洁,目前比较有名的几个是Keras,Tflearn,tfslim,以及TensorLayer。

Caffe

        和 Tensorflow 名气一样大的是深度学习框架Caffe,由加州大学伯克利的 Phd 贾扬清开发,全称是 Convolutional Architecture for Fast Feature Embedding,是一个清晰而高效的开源深度学习框架,目前由伯克利视觉学中心(Berkeley Vision and Learming Center, BVLC)进行维护。
        从它的名字就可以看出其对于卷积网络的支持特别好,同时也是用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接口。

MXNet

        MXNet 的主要作者是李沐,最早就是几个人抱着纯粹对技术和开发的热情做起来的兴趣项目,如今成为了亚马逊的官方框架,有着非常好的分布式支持,而且性能特别好,占用显存低,同时其开放的语言接口不仅仅有 Python 和 C++,还有R,MatlabScala,JavaScript,等等,可以说能够满足使用任何语言的人。
        但是 MXNet 的缺点也很明显、教程不够完善,使用的人不多导致社区不大,同时每年很少有比赛和论文是基于 MXNet 实现的,这就使得 MXNet 的推广力度和知名度不高。

PyTorch

        PyTorch 是 Torch7 团队开发的,从它的名字就可以看出,其与 Torch 的不同之处在于 PyTorch 使用了 Python 作为开发语言。所谓“Python first”,同样说明它是一个以 Python 优先的深度学习框架,不仅能够实现强大的 GPU 加速,同时还支持动态神经网络,这是现在很多主流框架比如 Tensorflow 等都不支持的。
        PyTorch 既可以看做加入了 GPU 支持的 numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络,除了 Facebook 之外,它还已经被 Twitter、CMU 和 Salesforce 等机构采用,如图2.1所示。

PyTorch的特点:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值