您现在的位置:首页 > 教案格式 > 正文

深度学习框架之间的区别

2019-09-26 08:02 网络整理 教案网

尔雅通识课学习平台使用手册_ 教育139家校圈校讯通讨论平台_课课家教育平台

欢迎各位阅读本篇文章,这个程序向人们展示了机器学习的能力,提出了许多令人深思的社会问题与哲学问题。本篇文章讲述了深度学习的10大框架的对比详解,课课家教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!

早期史学家是根据晚期的、出处不明的传世文献建立起历史框架(包括仅仅几个统治者的年表)及其细节的,因此,他们永远不能像考古学家那样精确地谈论过去。 随着微应用的流行, 以注解替代xml配置的开发方式将越来越流行. 作者汪云飞没有讲太多废话, 内容基本都是说spring boot的某个特性然后举个例子实战, 有利用ssh开发过简单项目的同学可以尝尝先(我去实习的岗位早就开始用了, 觉得蛮新颖的) 实际上学习任何一个框架的时候要先了解这个框架解决了什么问题, 只有理解了这个后才能更有针对性也更有效率地去进行学习。框架层则有caffe-mpi,这是全球首个集群并行版的caffe深度学习计算框架。

深度学习框架之间的区别_编程语言_ Python_编程_课课家教育

1. TensorFlow

torch:torch是一个机器学习开源框架,包含大量深度学习算法,可用于深度神经网络模型的简单开发。英特尔开源bigdl,可直接在spark框架下运行深度学习 英特尔开源了基于 apache spark 框架的分布式深度学习库bigdl。deeplearntoolbox[]是matlab工具包,它实现了除rnn之外的所有常见深度学习模型,其代码简单,适合初学者学习.caffe由贾扬清等[]开发,是目前最快的cnn实现,被广泛应用在计算机视觉领域,但caffe仅实现了cnn模型.torch[]是基于lua语言的深度学习框架,其运行速度极快,被广泛使用课课家教育平台,但torch未提供其他语言接口,因此拓展性差.theano[]由蒙特利尔大学开发课课家教育平台,本身是一个可用于gpu的对多维数组进行高效运算的python库,被广泛用于神经网络构建,很多深度学习python框架都基于theano开发,如keras[]、lasagne、pylearn2[]等. deeplearning4j[]是一款用java实现的商用深度学习框架,与hadoop和spark紧密结合,运行效率高且支持大规模分布式.tensorflow[]是google公司的第二代深度学习框架,实现了所有的主流深度学习模型,稳定且易用,但目前开源的部分运算效率不高,且不支持分布式系统.keras[]是基于theano[]的二次开发框架,其设计高度模块化,因此编程效率高,keras实现了cnn和rnn模型,出现时间短但发展十分迅速.mxnet[]是最新出现的cxxnet的下一代开源框架,提供多种语言接口,且支持大规模分布式并行,mxnet的编程效率和运行效率都相当高.。

使用 TensorFlow 需要编写大量的代码,你必须一遍又一遍地重新发明轮子。而且我并不是唯一一个这么想的人。Andrej Karpathy 在 Twitter 上就多次吐过槽: 推文:我希望 TensorFlow 能标准化我们的代码,但它是低层面的,所以我们在其上面的层上分道扬镳了:Slim、PrettyTensor、Keras、TFLearn … 比如:我们在 OpenAI 使用 TensorFlow,但我们似乎都更喜欢其它框架,我们有些人还写自定义代码。

叹几个月前,我去参加了「Google Experts Summit: TensorFlow, Machine Learning for everyone, with Sergio Guadarrama」。Sergio 是开发 TensorFlow 的一位工程师,但他在会上没有展示 TensorFlow,而是展示了一个在 TensorFlow 上工作的更高层的库 tf.contrib:。我的看法是:他们内部已经意识到如果要让更多人使用 TensorFlow,他们就需要以更高的抽象水平在其上创建一些层,从而简化 TensorFlow 的使用。 TensorFlow 支持 Python 和 C++,也允许在 CPU 和 GPU 上的计算分布,甚至支持使用 gRPC 进行水平扩展。 总结:TensorFlow 非常好,但你必须了解它好在哪里。如果你不想什么事都自己手动去做和重新发明轮子,你可以使用更简单的库(安利一下 Keras)。

2. Theano

Theano 是最老牌和最稳定的库之一。据我所知,深度学习库的开端不是 Caffe 就是 Theano。 和 TensorFlow 类似,Theano 是一个比较低层的库。也因此它并不适合深度学习,而更适合数值计算优化。它支持自动的函数梯度计算,带有 Python 接口并集成了 Numpy,这使得它从一开始就成为了通用深度学习领域最常使用的库之一。 今天,Theano 依然效果良好,但由于它不支持多 GPU 和水平扩展,在 TensorFlow 的热潮下(它们针对同一个领域),Theano 已然开始被遗忘了。

尔雅通识课学习平台使用手册_ 教育139家校圈校讯通讨论平台_课课家教育平台

3. Keras

「You have just found Keras.」

同时,mind os系统提供自定义开发功能,在开发语言上,hexa选择了go语言,并提供了直观易用的mind sdk,开发者只需编写几行代码就能为机器人创建mind skill,还能与ros、opencv、google assistant以及amazon alexa等第三方库进行无缝集成。跨平台的移动开发,意味着要为app编写一个可用于不同操作系统的代码库,然而主流手机操作系统(比如android和ios)有完全不同的系统结构,代码编写大相径庭,很难编写一个在两大平台通用的代码库,开发者只能写两套代码,并为平台做相应的调整。13. embarcadero / codegear是否有计划为delphi编写类似于微软msdn的文档库。

4. Lasagne

Lasagne 是一个工作在 Theano 之上的库。它的使命是简化一点深度学习算法之下的复杂计算,同时也提供了一个更加友好的接口(也是 Python 的)。这是一个老牌的库,并且很长时间以来它都是一个扩展能力很强的工具;但在我看来,它的发展速度赶不上 Keras。它们的适用领域都差不多,但 Keras 有更好的文档、也更完整。

5. Caffe

Caffe 不只是最老牌的框架之一,而是老牌中的老牌。 在我看来,Caffe 有非常好的特性,但也有一些小缺点。起初的时候它并不是一个通用框架,而仅仅关注计算机视觉,但它具有非常好的通用性。在我们实验室的实验中,CaffeNet 架构的训练时间在 Caffe 中比在 Keras 中(使用了 Theano 后端)少 5 倍。Caffe 的缺点是它不够灵活。

深度学习框架之间的区别_编程语言_ Python_编程_课课家教育

如果你想给它来一点新改变,那你就需要使用 C++ 和 CUDA 编程,不过你也可以使用 Python 或 Matlab 接口进行一些小改变。 Caffe 的文档非常贫乏。你需要花大量时间检查代码才能理解它(Xavier 初始化有什么用?Glorot 是什么?) Caffe 的最大缺点之一是它的安装。它需要解决大量的依赖包……我曾经安装过 Caffe 两次,真正痛苦至极。 但要清楚,Caffe 并不是一无是处。在投入了生产的计算机视觉系统的工具上,Caffe 是无可争议的领导者。它非常稳健非常快速。我的建议是:用 Keras 进行实验和测试,然后迁移到 Caffe 中进行生产。

尔雅通识课学习平台使用手册_课课家教育平台_ 教育139家校圈校讯通讨论平台

6. DSSTNE

DSSTNE 的发音同 Destiny,是一个酷劲十足的框架却总是被忽略。为什么?除去其他的因素不谈,原因在于这个框架不具有普适性,不是为一般常见任务所设计的。DSSTNE 框架只做一件事——推荐系统,但把这件事做到了极致。既不是为研究而设计,也不是为测试 idea 而设计(来源其官方网站的宣传语),DSSTNE 框架是为量产而设计。

我们已在 BEEVA 上做一些实验测试了,目前我已经感觉到这是一个运行非常快的工具并且能够得到非常好的运行结果(平均准确率均值——mAP 很高)。为了达到这一速度,DSSTNE 框架用 GPU 运行,这也是它的弊端之一:不同于篇中分析的其他框架或者库,这个框架不支持使用者随意在 CPU 和 GPU 中切换,而这可能会对有些尝试有用,但我们在 DSSTNE 里做这样的尝试时是不被框架所允许的。 其他的感受就是迄今为止 DSSTNE 还不是一个足够成熟的项目,而且它封装的太严密了(「black box」)。

如果我们想深入了解这个框架的运行机制是什么,我们必须且只能去看它的源码,并且你需要完成很多必须完成的设置(「TODO」)才可以看到。同时,关于这个框架的在线教程不多,而能让开发者进行操作尝试的指导就更少了。我的意见是再等 4 个月看看 DSSTNE 的最新版本。不能不说 DSSTEN 的确是一个很有意思的项目但还需要一点成长空间。 还想说明一点,这个框架对编程能力没有要求。DSSTNE 框架通过其终端的命令行来执行相关操作。 到目前为止,很多我知道也很流行的框架和库我还没有用过,我不能给出更多具体的细节。

7. Torch

在这个世界上每天仍有很多战争,但是一个优秀的「勇士」(西班牙语「Guerrero」)必须熟知哪些战争是需要去参加作战的,哪些是可以选择不参与的。 Torch 是一个很著名的框架,因巨头 Facebook 的人工智能研究所用的框架是 Torch,并且在被谷歌收购之前 DeepMind 也是用的 Torch(收购之后 DeepMind 转向了 TensorFlow)。Torch 的编程语言是 Lua,这就是我刚才所谈的「战争」的具体所指。在目前深度学习编程语言绝大部分以 Python 实现为主的大趋势下,一个以 Lua 为编程语言的框架的最大劣势莫过于此。我从未用使用过这个语言,如果我想使用 Torch 这个工具,毫无疑问我需要先学习 Lua 语言然后才能使用 Torch。这固然是一个合理的过程,但就我个人情况来说,我偏向于用 Python、Matlab 或者 C++的实现。

8. MXNet

mxnet 是一个支持大多数编程语言的框架之一,包括 Python,R,C++,Julia 等。但我觉得使用 R 语言的开发者会特别偏爱 mxnet,因为至今为止还是 Python 以不可置疑的态势称霸深度学习语言的(Python 与 R 的对决,猜猜我会站哪边?:-p) 老实说,在此之前我并没有很关注 mxnet。但是当亚马逊 AWS 宣布选择 mxnet 作为其深度学习 AMI 的库时触发我开始关注 mxnet。我必须去了解一下。

在深度学习平台上,用户可以使用gpu或cpu进行单机或分布式的深度学习模型训练与推断,同时享受云计算的灵活与弹性,实现按需横向、纵向扩展。此外微软也与亚马逊合作,提供开源的深度学习库gluon。推出了以下新的支持库:农历月历支持库中新增“农历月历”组件拖放支持库正则表达式支持库进程通讯支持库bt下载支持库网络通讯支持库二扩展界面支持库三中增加“高级选择夹”组件应用接口支持库opengl支持库directx发支持库sqlite数据库支持库控制台操作支持库扩展界面支持库五20。

尔雅通识课学习平台使用手册_课课家教育平台_ 教育139家校圈校讯通讨论平台

9. DL4J

我接触这一库,是因为它的 documentation。当时我正在寻找受限玻尔兹曼机、自编码器,在 DL4J 中找到了这两个 documentation。里面的文件很清楚,有理论,有代码案例。我必须得说 DL4J 的 documentation 简直是艺术品,其他库在记录代码的时候需要向它学习。 DL4J 背后的公司 Skymind 意识到,虽然在深度学习圈内 Python 是老大,但大部分程序员起自 java,所以需要找到一个解决方案。DL4J 兼容 JVM,也适用 Java、Clojure 和 Scala,随着 Scala 的起起落落,它也被很多有潜力的创业公司使用,所以我还会继续紧追这个库。 此外,Skymind 的 twitter 账户非常活跃,不断公开最新的科学论文、案例和教程,及其推荐大家关注。