导读:近几年,深度学习技术的大爆炸式发展,除了理论方面的突破外,还有基础架构的突破,这些都奠定了深度学习繁荣发展的基础。本文将对其中涌现出的几个著名的深度学习平台进行简要介绍。

作者:魏溪含 涂铭 张修鹏如需转载请联系大数据(ID:hzdashuju)

01 Theano

Theano是在BSD许可证下发布的一个开源项目,是由LISA集团(现MILA)在加拿大魁北克的蒙特利尔大学开发的,其是以一位希腊数学家的名字命名的。

Theano是一个Python库,可用于定义、优化和计算数学表达式,特别是多维数组(numpy.ndarray)。它的诞生是为了执行深度学习中的大规模神经网络算法,从本质上而言,Theano可以被理解为一个数学表达式的编译器:用符号式语言定义程序员所需的结果,并且Theano可以高效地运行于GPU或CPU中。

在过去很长一段时间内,Theano是深度学习开发与研究的行业标准。而且,由于出身学界,它最初是为学术研究而设计的,这也导致深度学习领域的许多学者至今仍在使用Theano。

但随着Tensorflow在Google的支持下强势崛起,Theano日渐式微,使用Theano的人也越来越少。这个转变的标志性事件是:创始者之一的Ian Goodfellow放弃Theano转而去Google开发Tensorflow了。

尽管Theano已退出历史舞台,但作为Python的第一个深度学习框架,它很好地完成了自己的使命,为深度学习研究人员的早期拓荒提供了极大的帮助,同时也为之后的深度学习框架的开发奠定了基本的设计方向:以计算图为框架的核心,采用GPU加速计算。

  • 总结:对于深度学习新手,可以使用Theano来练手;但对于职业开发者,建议使用Tensorflow。

02 Tensorflow

2015年11月10日,Google宣布推出全新的机器学习开源工具Tensorflow。Tensorflow最初是由Google机器智能研究部门的Google Brain团队开发,基于Google 2011年开发的深度学习基础架构DistBelief构建起来的。

Tensorflow是广泛使用的实现机器学习以及其他涉及大量数学运算的算法库之一。Google几乎在所有应用程序中都使用Tensorflow来实现机器学习。例如,如果你使用过Google照片或Google语音搜索,那么你就间接使用了Tensorflow模型。它们在大型Google硬件集群上工作,在感知任务方面,功能非常强大。

Tensorflow在很大程度上可以看作是Theano的后继者,不仅因为它们有很大一批共同的开发者,而且它们还拥有相近的设计理念:它们都是基于计算图实现自动微分系统。Tensorflow使用数据流图进行数值计算,图中的节点代表数学运算,图中的边则代表在这些节点之间传递的多维数组(tensor)。

Tensorflow编程接口支持Python和C++。随着1.0版本的公布,Java、Go、R和Haskell API的alpha版本也得到支持。此外,Tensorflow还可在Google Cloud和AWS中运行。

Tensorflow还支持Windows 7、Windows 10和Windows Server 2016。由于Tensorflow使用C++ Eigen库,所以库可在ARM架构上进行编译和优化。这也就意味着用户可以在各种服务器和移动设备上部署自己的训练模型,而无须执行单独的模型解码器或者加载Python解释器。

作为当前最流行的深度学习框架,Tensorflow获得了极大成功,但在学习过程中读者需要注意下面这些问题。

  • 由于Tensorflow的接口一直处于快速迭代之中,并且版本之间存在不兼容的问题,因此开发和调试过程中可能会出现一些问题(许多开源代码无法在新版的Tensorflow上运行)。

  • 想要学习Tensorflow底层运行机制的读者需要做好准备,Tensorflow在GitHub代码仓库的总代码量超过100万行,系统设计比较复杂,因此这将是一个漫长的过程。

  • 代码层面,对于同一个功能,Tensorflow提供了多种实现,这些实现良莠不齐,使用中还存在细微的区别,请读者注意,避免入坑。另外,Tensorflow还创造了图、会话、命名空间、PlaceHolder等诸多抽象概念,对普通用户来说可能会难以理解。

  • 总结:凭借着Google强大的推广能力,Tensorflow已经成为当今最为热门的深度学习框架,虽不完美但是最流行,目前,各公司使用的框架也不统一,读者有必要多学习几个流行框架以作为知识储备,Tensorflow无疑是一个不错的选择。

项目地址:

https://github.com/tensorflow/tensorflow

03 MXNet

MXNet是亚马逊(Amazon)的李沐带队开发的深度学习框架。它拥有类似于Theano和Tensorflow的数据流图,为多GPU架构提供了良好的配置,有着类似于Lasagne和Blocks的更高级别的模型构建块,并且可以在你想象的任何硬件上运行(包括手机)。

对Python的支持只是其功能的冰山一角,MXNet同样提供了对R、Julia、C++、Scala、Matlab、Golang和Java的接口。

MXNet以其超强的分布式支持,明显的内存、显存优化为人所称道。同样的模型,MXNet往往占用更小的内存和显存,并且在分布式环境下,MXNet展现出了明显优于其他框架的扩展性能。

MXNet的缺点是推广不给力及接口文档不够完善。MXNet长期处于快速迭代的过程中,其文档却长时间未更新,这就导致新手用户难以掌握MXNet,老用户则需要常常查阅源码才能真正理解MXNet接口的用法。

  • 总结:MXNet文档比较混乱导致其不太适合新手入门,但其分布性能强大,语言支持比较多,比较适合在云平台使用。

项目主页:

https://mxnet.incubator.apache.org/

04 Keras

Keras是一个高层神经网络API,由纯Python语言编写而成,并使用Tensorflow、Theano及CNTK作为后端。Keras为支持快速实验而生,能够将想法迅速转换为结果。

Keras应该是深度学习框架之中最容易上手的一个,它提供了一致而简洁的API,能够极大地减少一般应用下用户的工作量,避免用户重复造轮子,而且Keras支持无缝CPU和GPU的相互转换。

为了屏蔽后端的差异性,Keras做了层层封装,导致用户在新增操作或是获取底层的数据信息时过于困难。同时,过度封装也使得Keras的程序过于缓慢,许多bug都隐藏于封装之中。

另外就是学习Keras十分容易,但是很快就会遇到瓶颈,因为它缺少灵活性。另外,在使用Keras的大多数时间里,用户主要是在调用接口,很难真正学习到深度学习的内容。

  • 总结:Keras比较适合作为练习使用的深度学习框架,但是因为其过度的封装导致并不适合新手学习(无法理解深度学习的真正内涵),故不推荐。

项目主页:

https://keras.io

05 PyTorch

PyTorch是一个Python优先的深度学习框架,能够在强大的GPU加速的基础上实现张量和动态神经网络。

PyTorch是一个Python软件包,其提供了两种高层面的功能,具体如下。

  1. 使用强大的GPU加速的Tensor计算(类似于Numpy)。

  2. 构建基于tape的autograd系统的深度神经网络。

  3. 活跃的社区:PyTorch提供了完整的文档,循序渐进的指南,作者亲自维护论坛以供用户交流和求教问题。Facebook人工智能研究院(FAIR)对PyTorch提供了强力支持,作为当今排名前三的深度学习研究机构,FAIR的支持足以确保PyTorch获得持续的开发更新,而不至于像许多由个人开发的框架那样昙花一现。

如有需要,你也可以复用你喜欢的Python软件包(如Numpy、scipy和Cython)来扩展PyTorch。

相对于Tensorflow,PyTorch的一大优点是,它的图是动态的,而Tensorflow等都是静态图,不利于扩展。同时,PyTorch非常简洁,方便使用。

  • 总结:如果说TensorFlow的设计是“Make It Complicated”,Keras的设计是“Make It Complicated And Hide It”,那么PyTorch的设计真正做到了“Keep it Simple,Stupid”。

项目地址:

http://pytorch.org/

06 Caffe

Caffe是基于C++语言编写的深度学习框架,作者是中国人贾扬清。它开放源码(具有Licensed BSD),提供了命令行,以及Matlab和Python接口,清晰、可读性强、容易上手。

Caffe是早期深度学习研究者使用的框架,由于很多研究人员在上面进行开发和优化,因此其现今也是流行的框架之一。Caffe也存在不支持多机、跨平台、可扩展性差等问题。初学者使用Caffe时还需要注意下面这些问题。

  1. Caffe的安装过程需要大量的依赖库,因此会涉及很多安装版本问题,初学者不易上手。

  2. 当用户想要实现一个新的层时,需要用C++实现它的前向传播和反向传播代码,而如果想要新层运行在GPU之上,则需要同时使用CUDA实现这一层的前向传播和反向传播。

Caffe2出自Facebook人工智能实验室与应用机器学习团队,但贾扬清仍是主要贡献者之一。Caffe2在工程上做了很多优化,比如运行速度、跨平台、可扩展性等,它可以看作是Caffe更细粒度的重构,但在设计上,其实Caffe2与TensorFlow更像。目前代码已开源。

  • 总结:至今工业界和学界仍有很多人在使用Caffe,而Caffe2的出现为我们提供了更多的选择。

项目地址:

Caffe:http://caffe.berkeleyvision.org/

Caffe2:https://caffe2.ai/

关于作者:魏溪含 ,爱丁堡大学人工智能硕士,阿里巴巴达摩院算法专家,在计算机视觉、大数据领域有8年以上的算法架构和研发经验。

涂铭,阿里巴巴数据架构师,对大数据、自然语言处理、图像识别、Python、Java相关技术有深入的研究,积累了丰富的实践经验。

张修鹏,毕业于中南大学,阿里巴巴技术发展专家,长期从事云计算、大数据、人工智能与物联网技术的商业化应用,在阿里巴巴首次将图像识别技术引入工业,并推动图像识别产品化、平台化。

本文摘编自《深度学习与图像识别:原理与实践》,经出版方授权发布。

延伸阅读《深度学习与图像识别:原理与实践》

点击上图了解及购买

转载请联系微信:DoctorData

推荐语:阿里巴巴达摩院算法专家、阿里巴巴技术发展专家、阿里巴巴数据架构师联合撰写,从技术原理、算法和工程实践3个维度系统展开,既适合零基础读者快速入门,又适合有基础读者理解其核心技术;写作方式上避开了艰涩的数学公式及其推导,深入浅出。

「大数据」内容合伙人之「鉴书小分队」上线啦!

最近,你都在读什么书?有哪些心得体会想要跟大家分享?

数据叔最近搞了个大事——联合优质图书出版商机械工业出版社华章公司发起鉴书活动。

简单说就是:你可以免费读新书,你可以免费读新书的同时,顺手码一篇读书笔记就行。详情请在大数据公众号后台对话框回复合伙人查看。

有话要说?

Q: 你用过哪些深度学习框架?

欢迎留言与大家分享

猜你想看?

  • 这才是真正适合小白的教程:Python有什么用?数据化运营怎么做?

  • 最后2天,错过等1年,这7本计算机经典图书竟然打折了!

  • 一文看懂用R语言读取Excel、PDF和JSON文件(附代码)

  • 人民日报喊你学数学!实力不允许?8本书带你入门

更多精彩?

在公众号对话框输入以下关键词

查看更多优质内容!

PPT | 报告 | 读书 | 书单 | 干货 

大数据 | 揭秘 | Python | 可视化

AI | 人工智能 | 5G | 区块链

机器学习 | 深度学习 | 神经网络

合伙人 1024 | 段子 | 数学 | 高考

据统计,99%的大咖都完成了这个神操作

?

觉得不错,请把这篇文章分享给你的朋友

转载 / 投稿请联系:baiyu@hzbook.com

更多精彩,请在后台点击“历史文章”查看

点击阅读原文,了解更多

入门大爆炸式发展的深度学习,你先要了解这6个著名框架相关推荐

  1. 入门大爆炸式发展的深度学习,你先要了解这4个最流行框架

    来源:大数据DT 作者:卢誉声 本文约2800字,建议阅读9分钟. 可以预见,深度学习在近年内都会是最流行.最有效的机器学习方法之一. [ 导读 ]对深度学习做出巨大贡献的Yoshua Bengio, ...

  2. 深度学习入门笔记(九):深度学习数据处理

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  3. 深度学习入门笔记(十七):深度学习的极限在哪?

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  4. GMIS 2017 大会余凯演讲:深度学习引领驾驶革命

    GMIS 2017 大会余凯演讲:深度学习引领驾驶革命 2017-05-27 16:32:37    深度学习   创业公司   人工智能应用   自动驾驶    0 0 0 全球机器智能峰会(GMI ...

  5. 深度学习入门笔记(一):深度学习引言

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  6. 基于深度学习的网络加密流量分类与入侵检测框架

    写在前面: 本文翻译供个人研究学习之用,不保证严谨与准确 github链接:https://github.com/WithHades/network_traffic_classification_pa ...

  7. AI:机器学习、深度学习在实际应用(工业应用)中的步骤流程框架、实际场景(案例)之详细攻略

    AI:机器学习.深度学习在实际应用(工业应用)中的步骤流程框架.实际场景(案例)之详细攻略 目录 机器学习/深度学习场景实际应用 1.分类问题案例 2.回归问题案例 3.聚类问题案例 机器学习/深度学 ...

  8. 疲劳驾驶样本集_无人驾驶技术入门(十六)| 初识深度学习之交通标志分类

    前言 在上两期的<无人驾驶技术入门>中,我以车道线检测为例,介绍了计算机视觉领域一些基本的算法.应用图像处理算法和调试算法阈值,就能实现车道线的检测和跟踪. 车道线检测.跟踪的项目,主要是 ...

  9. 我的机器学习入门之路(中)——深度学习(自然语言处理)

    继上一篇<我的机器学习入门之路(上)--传统机器学习>,这一篇博客主要记录深度学习(主要是自然语言处理)这一块内容的学习过程.以下均将自然语言处理简称NLP. 这一块内容的学习路线分为三部 ...

最新文章

  1. RDKit:可视化药效团(Pharmacophore)
  2. 三星电子电容器件识别
  3. SAP的号码范围(number range)SNRO和SNUM自动编号工具的用法
  4. java信用分秒杀系统设计思路,秒杀系统设计思路
  5. iOS之NSString
  6. 乒乓球比赛赛程_10月5日至10月11日中央电视台直播录播乒乓球比赛安排
  7. vue-快速原型开发
  8. 云原生数据仓库AnalyticDB支撑双11,大幅提升分析实时性和用户体验
  9. word论文排版插件_教你如何用word快速搞定论文排版
  10. 自学python需要什么_自学Python编程有什么要求
  11. 转:Cocoa Runtime系统知识整理
  12. Python获取照片信息
  13. 使用Java 10调用C/C++动态链接库dll之HelloWorld
  14. C语言小程序:彩票号码生成器
  15. 使用SubSonic生成数据访问层步骤
  16. 【计算机网络实验】使用Packet Tracer搭建网络拓扑
  17. Python统计列表元素出现次数
  18. C#上位机工作感想2(2020.4.15-2021.7.24)
  19. 建立数据库模型:从业务模型、概念模型到逻辑模型
  20. mysql 图片路径用什么类型_mysql数据库怎么存图片路径

热门文章

  1. GIS笔记-使用Geoserver搭建MWTS服务(构建离线GIS服务)
  2. C++ | Qt 获取局域网中存在的主机(IP以及主机名)
  3. 7.3图的遍历(广度优先)-理论
  4. 动态调用object php,PHP动态调用,大家都来谈吧
  5. java list 合并去重复_java 实现多个list 合并成一个去掉重复的案例
  6. 虚拟机centos7 桥接模式
  7. asc码转换 linux_Linux终端下将图片转换ASCII Art代码图案
  8. c语言判断回文平方数,C/C++回文数的判断(转)
  9. 华为云牵手同舟共济伙伴 持续发力构建云核心生态圈
  10. 关于脚本log返回乱码解决方法