导读:近几年,随着深度学习的爆炸式发展,相关理论和基础架构得到了很大突破,它们奠定了深度学习繁荣发展的基础。这其中涌现了几个著名的深度学习平台,本文将对这些平台进行简要介绍。

作者:涂铭 金智勇

来源:大数据DT(ID:hzdashuju)

01 Theano

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

Theano是一个Python库,可用于定义、优化和计算数学表达式,特别是多维数组(numpy.ndarray)。在解决包含大量数据问题的时候,使用Theano编程可实现比C语言编程更快的运行速度。通过GPU加速,Theano甚至可以比基于CPU计算的C语言快好几个数量级。

Theano结合 CAS(Computer Algebra System,计算机代数系统)和优化编译器,还可以为多种数学运算生成定制的C语言代码。对于处理包含重复计算的复杂数学表达式任务,计算速度很重要,因此这种CAS和优化编译器的组合非常有用。对于需要将每种不同的数学表达式都计算一遍的情况,Theano可以最小化编译/解析计算量,但仍会给出如自动微分那样的符号特征。

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

但随着TensorFlow在谷歌的支持下强势崛起,Theano日渐式微,使用的人越来越少。其中标志性事件是Theano的创始者之一Ian GoodFellow放弃Theano转去谷歌开发TensorFlow了。

2017年9月28日,在Theano 1.0正式版发布前夕,LISA实验室负责人、深度学习三巨头之一的Yoshua Bengio宣布Theano将停止开发:“Theano is Dead.”

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

对于深度学习新手,可以使用Theano做入门练习,但对于职业开发者,建议使用 TensorFlow。

02 TensorFlow

TensorFlow是Google Brain团队基于Google在2011年开发的深度学习基础架构DistBelief构建的。Google在其所有的应用程序中都使用TensorFlow实现机器学习,例如使用Google照相机和Google语音搜索功能,就间接使用了TensorFlow模型。

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

TensorFlow编程接口支持Python和C++,TensorFlow 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无疑是一个不错的选择。

03 MXNet

MXNet是亚马逊首席科学家李沐带领团队开发的深度学习框架,拥有类似Theano和TensorFlow的数据流图,为多GPU架构提供了良好的配置,拥有类似Lasagne和Blocks的高级别模型构建块,可以在我们需要的任何硬件上运行(包括手机)。除了支持Python,MXNet同样提供了对 R、Julia、C++、Scala、Matlab、Go和Java的接口。

MXNet因其超强的分布式、内存/显存优化能力受到开发者的欢迎。同样的模型,MXNet往往占用的内存和显存更小,在分布式环境下,MXNet展现出了明显优于其他框架的扩展性能。

MXNet的缺点是推广力度不够、接口文档不完善。虽然MXNet版本快速迭代,但官方API文档却长时间未更新,导致新用户难以掌握新版本的MXNet,而老用户又需要查阅源码才能真正理解MXNet接口的用法。MXNet文档比较混乱,不太适合新手入门,但其分布性能强大,语言支持比较多,比较适合在云平台使用。

04 Keras

Keras是一个高层神经网络API,使用Python编写,并将TensorFlow、Theano及CNTK作为后端。Keras为支持快速实验而生,能够快速实现开发者的想法。Keras目前是最容易上手的深度学习框架,它提供了一致且简洁的API,能够极大减少一般应用下用户的工作量。

相比于深度学习框架,Keras更像是一个深度学习接口,它构建于第三方框架之上。Keras的缺点很明显:过度封装导致丧失了灵活性。Keras最初作为Theano的高级API,后来增加了TensorFlow和CNTK作为后端。

为了屏蔽后端的差异性,Keras提供了一致的用户接口并做了层层封装,导致用户在新增操作或是获取底层的数据信息时过于困难。同时,过度封装也使得Keras的程序运行十分缓慢,许多Bug都隐藏于封装之中。在绝大多数场景下,Keras是本文介绍的所有框架中运行最慢的。

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

Keras的过度封装使其并不适合新手学习(无法理解深度学习的真正内涵),故不推荐。

05 PyTorch

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

PyTorch提供了完整的使用文档、循序渐进的用户指南,作者亲自维护PyTorch论坛,方便用户交流和解决问题。

Facebook人工智能研究院FAIR对PyTorch的推广提供了大力支持。作为当今排名前三的深度学习研究机构,FAIR的支持足以确保PyTorch获得持续开发、更新的保障,不至于像一些个人开发的框架那样昙花一现。如有需要,我们也可以使用Python软件包(如NumPy、SciPy和Cython)来扩展 PyTorch。

相对于TensorFlow,PyTorch的一大优点是它的图是动态的,而TensorFlow框架是静态图,不利于扩展。同时,PyTorch非常简洁,方便使用。本书选取PyTorch为主要的实现框架。

如果说TensorFlow的设计是“Make it complicated”,Keras的设计是“Make it complicated and hide it”,那么PyTorch的设计则真正做到了“Keep it simple,stupid”。

06 Caffe

Caffe是基于C++编写的深度学习框架,作者是贾扬清,源码开放(具有Licensed BSD)并提供了命令行工具以及Matlab和Python接口。

Caffe一直是深度学习研究者使用的框架,很多研究人员在上面进行开发和优化,因而有了不少沉淀,因此Caffe也是流行的深度学习框架之一。尽管如此,Caffe也存在不支持多机、跨平台、可扩展性差等问题。初学使用Caffe还需要注意下面两个问题。

  • Caffe的安装过程需要大量的依赖库,因此涉及很多安装版本问题,初学者须多加注意。

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

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

在工业界和学术界仍有很多人使用Caffe,而Caffe2的出现给我们提供了更多的选择。

关于作者:涂铭,资深数据架构师和人工智能技术专家,现就职于腾讯,曾就职于阿里。对大数据、自然语言处理、图像识别、Python、Java等相关技术有深入的研究,积累了丰富的实践经验。

金智勇,计算机视觉算法专家,在计算机视觉领域深耕12年。现就职于百度,曾就职于阿里和三星等知名高新技术企业。业务领域涵盖增强现实、人脸识别、图像美化、智能交通、工业质检等多个方向,具有丰富的算法研究与落地经验。

本文摘编自《深度学习与目标检测:工具、原理与算法》,经出版方授权发布。(ISBN:9787111690344)

《深度学习与目标检测:工具、原理与算法》

点击上图了解及购买

转载请联系微信:DoctorData

推荐语:AI和计算机视觉专家在阿里、腾讯、百度经验总结,工具、原理、算法3维度快速入门目标检测,附源数据和代码。

划重点

详解 6 大主流深度学习框架相关推荐

  1. 2017深度学习最新报告及8大主流深度学习框架超详细对比(内含PPT)

    2017深度学习最新报告(PPT) ​ 深度学习领军人物 Yoshua Bengio 主导的蒙特利尔大学深度学习暑期学校目前"深度学习"部分的报告已经全部结束. 本年度作报告的学术 ...

  2. TensorFlow与主流深度学习框架对比

    引言:AlphaGo在2017年年初化身Master,在弈城和野狐等平台上横扫中日韩围棋高手,取得60连胜,未尝败绩.AlphaGo背后神秘的推动力就是TensorFlow--Google于2015年 ...

  3. 人脸口罩检测现开源PyTorch、TensorFlow、MXNet等全部五大主流深度学习框架模型和代码...

    号外!号外! 现在,AIZOO开源PyTorch.TensorFlow.MXNet.Keras和Caffe五大主流深度学习框架的人脸检测模型和代码啦! 先附上Github链接为敬. https://g ...

  4. 主流深度学习框架对比

    深度学习研究的热潮持续高涨,各种开源深度学习框架也层出不穷,其中包括TensorFlow.Caffe.Keras.CNTK.Torch7.MXNet.Leaf.Theano.DeepLearning4 ...

  5. [人工智能-深度学习-1]:主流深度学习框架比较、排名

    作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing 本文网址:https://blog.csdn.net/HiWangWenBing/article ...

  6. 从TensorFlow到DL4J——主流深度学习框架对比分析

    从TensorFlow到DL4J--主流深度学习框架对比分析 2022年2月22日 极链AI云 官网地址 点击注册 更多AI小知识,关注<极链AI云>公众号 文章目录 从TensorFlo ...

  7. 2_初学者快速掌握主流深度学习框架Tensorflow、Keras、Pytorch学习代码(20181211)

    初学者快速掌握主流深度学习框架Tensorflow.Keras.Pytorch学习代码 一.TensorFlow 1.资源地址: 2.资源介绍: 3.配置环境: 4.资源目录: 二.Keras 1.资 ...

  8. DL框架:主流深度学习框架(TensorFlow/Pytorch/Caffe/Keras/CNTK/MXNet/Theano/PaddlePaddle)简介、多个方向比较、案例应用之详细攻略

    DL框架:主流深度学习框架(TensorFlow/Pytorch/Caffe/Keras/CNTK/MXNet/Theano/PaddlePaddle)简介.多个方向比较.案例应用之详细攻略 目录 深 ...

  9. AI - 主流深度学习框架简介

    主流深度学习框架 框架发展历程 Google - TensorFlow Google - Keras BVLC - Caffe/Caffe2 Facebook - PyTorch DMLC - MXN ...

最新文章

  1. Nmap源码分析(基本框架)
  2. javascript动态创建表格:新增、删除行和列
  3. Gateway currency conversion utility
  4. 【Anaconda】InvalidVersionSpecError: Invalid version spec: =2.7
  5. 605. 种花问题003(贪心算法+思路+详解)
  6. 【渝粤教育】电大中专成本会计_1作业 题库
  7. redis的默认配置文件redis.conf详解
  8. 基准对象object中的基础类型----元组 (五)
  9. hdu3068 求一个字符串中最长回文字符串的长度 Manacher算法
  10. c语言计算器小程序,计算器程序完整代码
  11. 如何把苹果手机iPhone/iPad无线投屏到MAC电脑计算机上面?
  12. OPPOR9m官方固件刷机教程
  13. vue 怎么销毁dom_Vue 中如何转移 Dom ?
  14. 网页另存为html有的图片无法显示,网页图片不能另存为怎么回事?网页上找到的图片不能另存的解决方法...
  15. 中国大学慕课精品课程《数据库系统原理》
  16. Ps-制作二级页面总结
  17. C#界面程序设计——04导入并修改word文件
  18. 利用傅里叶变换获取低频和高频部分图像
  19. python 翻译模块 翻译API使用(百度、有道、谷歌)
  20. Genbank的gbff格式转gff3格式(补充)

热门文章

  1. Qt工作笔记-使用QRegExp实现QString的split【读取文件时候,过滤各种字符】
  2. Python工作笔记-统计文件夹内只有1个文件的文件夹
  3. 谁动了你的主机-Windows“唤醒”和“开机”时自动拍照-狩猎者项目
  4. js导出的xlsx无法打开_vue将数据导出为excel文件就是如此简单
  5. java正则表达式 ascii_Java——正则表达式
  6. gan怎么输入一维数据_时空序列预测模型GAN+LSTM
  7. java发送消息_通过java给qq邮箱发送信息
  8. linux下软件发布,Linux Kernel 5.12发布下载,附新特性及新功能介绍
  9. c语言加法结合性,C语言 运算符 的结合性 怎么理解?求举例子详细解答!!
  10. 前端基础-html-视频标签的介绍