几种机器学习平台的对比和选择

前言

选择什么样的深度学习框架一直是开发者非常关心的一个话题,而且深度学习框架之间的「战争」也越来越激烈。随着近几年AI的火热,越来越多的出现有关各个机器学习框架的对比文章,且随着 Python 逐渐成为机器学习社区最受欢迎的语言,支持 Python的深度学习框架的性能也在持续的被关注。

由于自己想了解下机器学习,随机查阅了诸多文献给予此,将横向的对比以下深度学习框架和工具的特点:

Theano

Lasagne

Blocks

TensorFlow

Keras

MXNet

PyTorch

Caffe

CNTK

Neon

开始之前,先来介绍下几个名词:

卷积神经网络(Convolutional Neural Network,CNN)

CNN是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,且该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,对于大型图像处理有出色表现。主要用来识别位移、缩放及其他形式扭曲不变性的二维图形,由于CNN的特征检测层是通过训练数据进行学习的,所以在使用CNN时,避免了显式的特征抽取,而是隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。

递归神经网络(Recurrent neural Network,RNN)

RNN神经网络是一种节点定向连接成环的人工神经网络。网络的内部状态可以展示动态时序行为。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等。具有更强的动态行为和计算能力。

NumPy(Numeric Python)

一个用Python实现的科学计算包,是Python的一种开源数值计算扩展,包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。提供了许多高级的数值编程工具,可用来存储和处理大型矩阵,如矩阵数据类型、矢量处理、以及精密的运算库,是专为进行严格的数字处理而产生。基本可以认为NumPy将Python变成了一种免费的更强大的MatLab系统。

简介

Theano

Theano 是一个Python 库,允许你定义、优化并且有效地评估涉及到多维数组的数学表达式。

Theano 是数值计算的主力,它支持了许多其他的深度学习框架。Theano由 Frédéric Bastien创建,这是蒙特利尔大学机器学习研究所(MILA)背后的一个非常优秀的研究团队。它的API 水平较低,并且为了写出效率高的Theano,需要对隐藏在其他框架幕后的算法相当的熟悉。如果有着丰富的学术机器学习知识,正在寻找模型的精细控制方法,或者想要实现一个新奇的或不同寻常的模型,Theano是首选库。为了灵活性,Theano牺牲了易用性。

优点:灵活,正确使用时的高性能。

缺点:较高的学习难度,低水平的 API,编译复杂的符号图可能很慢。

Lasagne

在 Theano上建立和训练神经网络的轻量级库。

因为 Theano致力于成为符号数学中最先且最好的库,Lasagne提供了在 Theano顶部的抽象,这使得它更适合于深度学习。它主要由当前 DeepMind研究科学家 Sander Dieleman编写并维护。Lasagne并非是根据符号变量之间的函数关系来指定网络模型,而是允许用户在层级思考,为用户提供了例如「Conv2DLayer」和「DropoutLayer」的构建块。Lasagne在牺牲了很少的灵活性的同时,提供了丰富的公共组件来帮助图层定义、图层初始化、模型正则化、模型监控和模型训练。Theano+Lasagne是很多一线开发者的最爱。

优点:仍旧非常灵活,比 Theano更高级的抽象,文档和代码中包含了各种 Pasta Puns。

缺点:社区小。

Blocks

用于构建和训练神经网络的 Theano框架。

与 Lasagne类似,Blocks 是在 Theano 顶部添加一个抽象层使深度学习模型比编写原始的 Theano更清晰、更简单、定义更加标准化。它是由蒙特利尔大学机器学习研究所(MILA)编写,其中一些人为搭建Theano 和第一个神经网络定义的高级接口(已经淘汰的PyLearn2)贡献了自己的一份力量。比起Lasagne,Blocks灵活一点,代价是入门台阶较高,想要高效的使用它有不小的难度。除此之外,Blocks对递归神经网络架构(recurrent neural network architectures)有很好的支持,所以如果有兴趣探索这种类型的模型,它值得一看。

优点:仍旧非常灵活,比 Theano更高级的抽象,易于测试。

缺点:较高的学习难度,更小的社区。

TensorFlow

用于数值计算的使用数据流图的开源软件库。

TensorFlow 是较低级别的符号库(比如 Theano)和较高级别的网络规范库(比如Blocks 和Lasagne)的混合。虽然它是Python 深度学习库集合的最新成员,不过在Google Brain 团队支持下,它已经是最大的活跃社区了。它支持在多GPUs 上运行深度学习模型,为高效的数据流水线提供使用程序,并具有用于模型的检查,可视化和序列化的内置模块。且TensorFlow支持 Keras(一个很优秀的深度学习库)。

优点:由软件巨头 Google支持,非常大的社区,低级和高级接口网络训练,比基于 Theano配置更快的模型编译,完全地多 GPU支持。

缺点:虽然 Tensorflow正在追赶,但是在许多基准上比基于 Theano的慢,RNN支持仍不如 Theano。

Keras

Python 的深度学习库。支持Convnets(基于GPU实现的卷积神经网络)、递归神经网络等。在Theano 或者TensorFlow 上运行。

Keras 也许是水平最高,对用户最友好的库了。由 Francis Chollet(Google Brain团队中的另一个成员)编写和维护。它允许用户选择其所构建的模型是在 Theano上或是在 TensorFlow上的符号图上执行。Keras的用户界面受启发于 Torch。由于部分非常优秀的文档和其相对易用性,Keras的社区非常大并且非常活跃。TensorFlow已经与 Keras一起支持内置,所以很快 Keras将是 TensorFlow项目的一个分组。

优点:可供选择的 Theano或者 TensorFlow后端,直观、高级别的端口,更易学习。

缺点:不太灵活。

MXNet

MXNet 是一个旨在提高效率和灵活性的深度学习框架。

MXNet 是亚马逊(Amazon)选择的深度学习库,也许是最优秀的库。它拥有类似于Theano 和TensorFlow 的数据流图,架构设计得可以利用更多内存复用机会和为多GPU 配置提供了良好的配置,有着类似于Lasagne 和Blocks 更高级别的模型构建块,并且可以在你可以想象的任何硬件上运行(包括手机)。对Python 的支持只是其冰山一角——MXNet同样提供了对 R、Julia、C++、Scala、Matlab和Javascript 的接口。

优点:速度的标杆,非常灵活。

缺点:最小的社区,比 Theano更高的学习难度。

PyTorch

Python 中的张量(Tensors)和动态神经网络,有着强大的GPU 加速。

PyTorch 也是Python 深度学习框架列表中的一个新成员。它是从Lua 的Torch 库到Python 的松散端口,由Facebook 的人工智能研究团队(Artificial Intelligence Research team (FAIR))支持且因为它较早支持用于处理动态计算图,也是非常优秀的一款深度学习框架。

优点:来自 Facebook 组织的支持,完全地对动态图的支持,高级和低级API 的混合。

缺点:比其他选择,PyTorch还不太成熟,除了官方文档以外,只有有限的参考文献/资源。

Caffe

Caffe 起初并不是一个通用框架,而仅仅关注计算机视觉,但它具有非常好的通用性。

Caffe 具有很好的 CNN建模能力,但是 RNN资源就少很多,所以它更多的是面向图像识别、推荐引擎和自然语言识别等方向的应用,不面向其他深度学习应用诸如语音识别、时间序列预测、图像字幕和文本等其他需要处理顺序信息的任务。

优点:良好的CNN建模能力。

缺点:不够灵活,有限的参考文献/资源。

CNTK

CNTK 是微软的开源深度学习框架,是「Computational Network Toolkit(计算网络工具包)」的缩写。或是另一种称呼认知工具包(Cognitive Toolkit)。虽然也是强大的工具,但是社区小,文献资源和相关评论也是很少。

优点:丰富的 RNN教程和预构建模型。

缺点:社区小,新手级资料少。

Neon

Neon是Intel收购的一个深度学习框架,因此在Intel处理器架构平台性能相当好,且具有良好的CNN 建模能力。至于其他方面就逊色许多。

优点:较好的 CNN建模能力和Intel架构出色的性能。

缺点:社区小,新手级资料少。

对比

教程和资源

各类深度学习框架的教程与可利用的资源在质量和数量上有着显著的不同。

TensorFlow,MXNet,PyTorch和Theano有着很详尽的文档教程,与此相比,虽然微软的CNTK 和英特尔的Nervana Neon 也是强大的工具,却很少能见到有关它们的新手级资料。

语言和平台

毫无疑问,python是目前机器学习语言的趋势。

MXNet(Python、R、Scala、Julia、Matlab、Javascript、C++)与TensorFlow(python、C/C++)具有丰富的多语言支持。

多平台的支持首属MXNet(跨平台Linux、OS X、Windows、Android、iOS),Theano跨平台,TensorFlow暂时不支持Windows。

架构和速度

训练深度网络非常耗时,所以为在特定框架中构建和训练新模型,易于使用和模块化的前端是至关重要的。TensorFlow,PyTorch和 MXNet都有直观而模块化的架构,让开发相对变得简单。另外,因为有 TensorBoard web GUI等应用的存在,TensorFlow极易在训练中和训练后进行 debug和监控。

Caffe 也发布了一些预训练模型/权重(model zoo),能够作为初始权重被用于特殊领域或自定义图像的迁移学习或微调深度网络。能够转换基于caffe 的预训练模型权重,使其可以适应MXNET。

至于速度则需要考虑每个深度学习的框架所针对的领域了,RNN性能比较出色的有CNTK和 PyTorch,CNN性能比较出色的有Theano,Caffe和MXNet。另外Theano和MXNet在综合性能中是比较出色的,Tensorflow的性能在大多数测试中也是很有竞争力的。

多GPU和Keras兼容性

大多数深度学习应用都需要用到巨量的浮点运算(FLOP),了减少构建模型所需的时间,需要使用多 GPU并联的方式组建自己的学习平台。根据公开发表的文献,MXNet有着最好的多 GPU优化引擎,这也是其综合性能中比较出色的原因之一。另外TensorFlow和PyTorch对多GPU也有很好的支持。

基于Theano的深度学习框架(Lasagne)和 Keras是深度学习模型中较早且较广泛使用的框架,很容易用 Lasagne/Keras 实现新网络或者编辑现存网络。且Keras是一个用于快速构建深度学习原型的高级库,是数据科学家应用深度学习的好帮手,目前兼容Keras的只有Theano和TensorFlow。

CNN 建模能力

卷积神经网络(CNN)经常被用于图像识别、推荐引擎和自然语言识别等方向的应用。CNN由一组多层的神经网络组成,在运行时会将输入的数据进行预定义分类的评分。CNN也可用于回归分析,例如构成自动驾驶汽车中有关转向角的模型。评价一种框架的 CNN建模能力考虑以下几个特性:定义模型的机会空间、预构建层的可用性、以及可用于连接这些层的工具和功能。其中Theano,Caffe和MXNet都有很好的 CNN建模能力。另外,TensorFlow因为易于建立的 Inception V3模型,PyTorch 因为其丰富的 CNN 资源(易于使用的时间卷积集)使得这两种框架在 CNN 建模能力上脱颖而出。

RNN 建模能力

循环神经网络(RNN)常用于语音识别,时间序列预测,图像字幕和其他需要处理顺序信息的任务。目前,Microsoft的 CNTK和 PyTorch 有着丰富的 RNN教程和预构建模型。另外,目前很流行的 TensorFlow中也有一些 RNN 资源,且Keras中更是有很多使用 TensorFlow的 RNN 示例。

高级支持和扩展

主要考虑低级的张量(Tensor)运算符和控制流运算符的支持程度,高效的低级运算符实现能充当新模型的原料,控制流运算符增加符号引擎的表达性和通用性,这方面表现良好的主要是Theano和TensorFlow。

基于Theano的架构库可以说是最多的,Keras、Lasagne、blocks就是成功的案例。而TensorFlow是较低级别的符号库(比如Theano)和较高级别的网络规范库(比如Blocks 和Lasagne)的混合,且兼容Keras,良好的设计使得图像、队列、图像增加器等能成为更高级包装的有用构造块。

总结

语言和平台的支持:

MXNet:真正的跨平台,语言支持丰富。

Theano:跨平台Win、Linux、Mac,语言Python。

TensorFlow:Linux、Mac,语言Python、C、C++。

PyTorch:Linux、Mac,Python、Lua

教程和资源的比较:

TensorFlow、Theano、MXNet、PyTorch。

架构和扩展的比较:

Theano、TensorFlow、PyTorch、MXNet。

CNN建模能力的比较:

Caffe、MXNet、Theano,TensorFlow、PyTorch。

RNN建模能力的比较:

CNTK、PyTorch、TensorFlow、MXNet。

多GPU支持:

MXNet、TensorFlow、PyTorch、Theano。

综合性能:

MXNet、Theano、TensorFlow、PyTorch。


对比

框架


语言和平台


教程和资源


架构和扩展


Theano


Python/

Win、Linux、Mac


++++


+++++


TensorFlow


Python、C、C++/

Linux、Mac


+++++


+++++


MXNet


Python、R、Scala、Julia、Matlab、Javascript、C++/

跨平台


+++


+++


PyTorch


Python、Lua/

Linux、Mac


+++


+++


Caffe


C++/

Linux、Mac


+


+


CNTK


C++/

Win、Linux


+


+


Neon


Python/

Linux、Mac


+


+

注:Theano、Lasagne、Blocks在此处统一列为Theano项。

Keras是在 Theano或者 TensorFlow上运行的。

续表


对比

框架


多GPU支持


RNN建模能力


CNN建模能力


综合性能


Theano


++


++


+++


+++


TensorFlow


+++


++


++


+++


MXNet


++++


+++


++++


++++


PyTorch


++


+++


++


++


Caffe


+


++++


++


CNTK


+


++++


+


++


Neon


+


++


++


++

原文地址:https://www.cnblogs.com/1880su/p/9442416.html

时间: 2024-10-10 17:59:30

几种机器学习平台的对比和选择的相关文章

几种机器学习框架的对比和选择

几种机器学习平台的对比和选择 前言 选择什么样的深度学习框架一直是开发者非常关心的一个话题,而且深度学习框架之间的「战争」也越来越激烈.随着近几年AI的火热,越来越多的出现有关各个机器学习框架的对比文章,且随着 Python 逐渐成为机器学习社区最受欢迎的语言,支持 Python的深度学习框架的性能也在持续的被关注. 由于自己想了解下机器学习,随机查阅了诸多文献给予此,将横向的对比以下深度学习框架和工具的特点: Theano Lasagne Blocks TensorFlow Keras MXN

横向对比三大分布式机器学习平台:Spark、PMLS、TensorFlow

2017-08-04 11:47 程序设计/谷歌/对比 选自muratbuffalo 作者:Murat Demirbas 参与:Panda 分布式机器学习是机器学习领域的一大主要研究方向.近日纽约州立大学布法罗分校计算机科学与工程教授.Petuum Inc. 顾问 Murat Demirbas 和他的两位学生一起发表了一篇对比现有分布式机器学习平台的论文,对 Spark.PMLS 和 TensorFlow 等平台的架构和性能进行了比较和介绍.Murat Demirbas 教授在论文公布后还发表了

八种主流NoSQL数据库对比

摘要:虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举.详见我的IT-Homer博客: 八种主流NoSQL数据库对比 简介 NoSQL,是一项全新的数据库革命性运动,NoSQL的拥护者们提倡运用非关系型的数据存储.现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而NoSQL致力于改变这一现状.目前Google的 BigTable 和Amazon 的Dynamo使用的就是NoSQL型数

Google发布机器学习平台Tensorflow游乐场~带你玩神经网络(转载)

Google发布机器学习平台Tensorflow游乐场-带你玩神经网络 原文地址:http://f.dataguru.cn/article-9324-1.html> 摘要: 昨天,Google发布了Tensorflow游乐场.Tensorflow是Google今年推出的机器学习开源平台.而有了Tensorflow游乐场,我们在浏览器中就可以训练自己的神经网络,还有酷酷的图像让我们更直观地了解神经网络的工作原理.今 ... 网络 工具 机器学习 神经网络 Tensorflow 昨天,Google发

阿里云机器学习平台——PAI平台

在云栖TechDay第十五期活动上,阿里云iDST资深技术专家褚崴给大家带来了<阿里云机器学习平台>的分享,他以机器学习的概念入手展开了此次分享,演讲中他重点介绍了阿里云机器学习平台的基础架构和产品特点,并结合阿里内部的芝麻信用分.推荐系统等场景讲解了PAI平台的具体应用方案. 下文根据褚崴的演讲内容整理. 机器学习 图一 机器学习分类 机器学习简单来说就是,人教机器在我们积累的数据当中发现规律,然后能够辅助我们来做一些预测和决策. 机器学习笼统地讲可以分为三类: 1)有监督学习(superv

八种主流NoSQL数据库系统对比(转)

出处:http://database.51cto.com/art/201109/293029.htm 虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举. 但是NoSQL数据库之间的不同,远超过两 SQL数据库之间的差别.这意味着软件架构师更应该在项目开始时就选择好一个适合的 NoSQL数据库.针对这种情况,这里对 Cassandra. Mongodb.CouchDB.Redis. Riak. M

郭律: 论机器学习平台与人工智能的关系

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云AI中心发表于云+社区专栏 郭律,腾讯高级产品经理,腾讯云AI基础产品中心高级产品经理.解决方案架构师.主导腾讯智能钛TI-ONE(可视化机器学习平台)和TI-S(自动机器学习平台)两个产品的设计工作.从上海交通大学模式识别与智能系统专业博士毕业后,先后就职于IBM.普华永道从事IT架构.咨询方面的工作,对机器学习与金融.零售等业务场景的结合具有深刻理解,帮助学员掌握如何利用工具解决实际业务中面临的机器学习问题. 众所周知,

七种仿真平台

1 主要介绍以下七种仿真平台(侧重移动机器人仿真而非机械臂等工业机器人仿真): 1.1 USARSim-Unified System for Automation and Robot Simulation USARSim是一个基于虚拟竞技场引擎设计高保真多机器人环境仿真平台.主要针对地面机器人,可以被用于研究和教学,除此之外,USARSim是RoboCup救援虚拟机器人竞赛和虚拟制造自动化竞赛的基础平台.使用开放动力学引擎ODE(Open Dynamics Engine),支持三维的渲染和物理模

来,了解下用Python实现的四种机器学习技术!

机器学习技术VS.算法 虽然本教程专门讨论Python的机器学习技术,但我们很快就会转向算法.但在我们开始关注技术和算法之前,让我们先看看它们是否是同一回事. A 技术是解决问题的方法.这是一个相当通用的术语.但当我们说我们有一个算法,我们的意思是,我们有一个输入,并希望从它得到一个特定的输出.我们已经明确规定了实现这一目标所应遵循的步骤.我们将不遗余力地说,一个算法可以使用多种技术来获得输出. 现在我们已经区分了这两种技术,让我们来了解更多关于机器学习技术的内容. 用Python实现机器学习技