微信号:yunqiinsight

介绍:云栖社区是由阿里云负责运营、阿里巴巴技术协会和阿里巴巴集团各技术团队提供内容支持的开放式技术社区.

流行AI框架和库的优缺点比较

2018-02-03 22:00 云栖社区

云栖君导读:不知道自己应该选用哪个AI框架和库?看看本文就行了,本文为AI开发的工程师们梳理了现在最流行的框架,并简单的分析了它们的优缺点。


人工智能已经存在很长时间,然而,由于这一领域的巨大发展,近年来它已成为一个流行语。人工智能曾经被称为一个书呆子和天才领域,但由于各种库和框架的发展,它已成为一个友好的IT领域,更多的人开始了他们的人工智能之旅。


在这篇文章中,我们将研究人工智能的高质量库的优点和缺点,以及它们的一些特点。


一、TensorFlow



“使用数据流图计算进行机器学习”。


语言:C ++或Python。


当你进入AI时,你会听到的第一个框架之一就是Google的TensorFlow。TensorFlow是一个使用数据流图进行数值计算的开源框架。这个框架被称为具有允许在任何CPU或GPU上进行计算的架构,无论是台式机,服务器还是移动设备,另外这个框架在Python编程语言中是可用的,这也是Python大火的原因。


TensorFlow是通过称为节点的数据层进行排序,并根据获得的信息做出决定。



优点:


使用易于学习的语言(Python)。


使用计算图抽象。


可以使用可视化的TensorBoard。


缺点:


它很慢,因为Python不是编程语言中最快的。


缺乏许多预先训练的模型。


不完全开源。


二、CNTK



“开源深度学习工具包”。


语言:C ++。


我们可以称之为它是微软对Google的TensorFlow的回应。


微软的CNTK是一个增强分离计算网络模块化和维护的库,它提供了学习算法和模型描述。在需要大量服务器进行操作的情况下,CNTK可以同时利用多台服务器。


据说它的功能与Google的TensorFlow相近,但是,它更快。



优点:


非常灵活。


允许分布式培训。


支持C ++,C#,Java和Python。


缺点:


它以一种新的语言——Network Description Language(NDL)来实现。


缺乏可视化。


三、Theano



“数值计算库”。


语言:Python。


Theano是TensorFlow的强有力竞争者,它是一个功能强大的Python库,允许以高效率的方式进行多维数组的数值操作。


该库透明地使用GPU来执行数据密集型计算而不是CPU,因此操作效率很高。出于这个原因,Theano已经被用于为大规模的计算密集型操作长达十年的时间。然而,于二零一七年九月, Theano的1.0版本停止。


但这并不意味着它不再是一个强大的图书馆,你仍然可以随时进行深入的学习研究



优点:


优化CPU和GPU。


有效的计算任务。


缺点:


与其他库相比,原生Theano有点低级。


需要与其他库一起使用以获得高度的抽象。


AWS使用它上有点bug。


四、Caffe


“快速,开放的深度学习框架”。


语言:C ++。


Caffe是一个强大的深度学习框架,像这个清单上的其他框架一样,深度学习的研究速度非常快。


借助Caffe,你可以非常轻松地构建用于图像分类的卷积神经网络(CNN)。Caffe在GPU上运行的也很不错,这有助于在运行期间提高速度。


Caffe主类:



优点:


Python和MATLAB都可用。


表现的很好。


无需编写代码即可进行模型的训练。


缺点:


对于RNN网络不太友好。



对于新体系结构不太友好。


五、Keras


“为人类普及深度学习”。


语言:Python。


Keras是一个用Python编写的开源的神经网络库。与TensorFlow,CNTK和Theano不同,Keras并不意味着是一个端到端的机器学习框架。


相反,它作为一个接口,提供了一个高层次的抽象,这使得神经网络的配置变得简单,无论它坐在哪个框架上。


谷歌的TensorFlow目前支持Keras作为后端,而微软的CNTK也会在很短的时间内做到这一点。



优点:


它对用户非常友好。


它很容易扩展。


在CPU和GPU上无缝运行。


与Theano和TensorFlow无缝工作。


缺点:


不能有效地用作独立的框架。


六、Torch


“一个开源的机器学习库”。


语言:C。


Torch是一个用于科学和数字操作的开源机器学习库。


这是一个基于Lua编程语言的库而不是Python。


它通过提供大量的算法,使得深度学习研究更容易,并且提高了效率和速度。它有一个强大的N维数组,这有助于切片和索引等操作。它还提供了线性代数程序和神经网络模型。



优点:


非常灵活。


高水平的速度和效率。


大量的预训练模型可用。


缺点:


缺乏即时使用的代码。


它基于一种不那么流行的语言,Lua。


七、Accord.NET


“机器学习,计算机视觉,统计和.NET通用科学计算”。


语言:C#。


这里是一个为C#程序员存在的机器学习框架。

Accord.NET框架是一个.NET机器学习框架,使音频和图像处理变得简单。


这个框架可以有效地处理数值优化,人工神经网络,甚至可视化。除此之外,Accord.NET对计算机视觉和信号处理功能非常强大,同时也使得算法的实现变得简单。



优点:


它有一个庞大而积极的开发团队。


有据可查的框架。


有质量可视化。


缺点:


不是一个非常流行的框架。


比TensorFlow慢。


八、Spark MLlib


“可扩展的机器学习库”。


语言:Scala。


Apache的Spark MLlib是一个非常可扩展的机器学习库。它非常适用于Java,Scala,Python甚至R等语言。它非常高效,因为它可以与Python库和R库中的numpy进行互操作。


MLlib可以轻松插入到Hadoop工作流程中。它还提供了机器学习算法,如分类,回归和聚类。这个强大的库在处理大型数据时非常快速。



优点:


对于大规模数据非常快速。


提供支持多种语言。


缺点:


不是很完美的学习曲线。


即插即用仅适用于Hadoop。


九、Sci-kit学习


“用Python进行机器学习”。


语言:Python。


Sci-kit learn是一个非常强大的机器学习Python库,主要用于构建模型。


使用numpy,SciPy和matplotlib等其他库构建,对统计建模技术(如分类,回归和聚类)非常有效。


Sci-kit学习带有监督学习算法,无监督学习算法和交叉验证等功能。点击查看官网。


优点:


许多主要算法的可用性很高。


能够进行有效的数据挖掘。


缺点:


不是创建模型的最佳选择。


GPU效率不高。


十、MLPack


“可扩展的C ++机器学习库”。


语言:C ++。


MLPack是一个用C ++实现的可扩展的机器学习库,因为它是用C ++编写的,所以你可以猜测到它对于内存管理的非常好。


MLPack以极高的速度运行,可以支持高质量的机器学习算法与库一起运行。这个库对新手是友好的,它还提供了一个简单的API帮助新手使用。



优点:


非常容易扩展。


Python和C ++都可用。


缺点:

没有具体的参考资料。


本文由阿里云云栖社区组织翻译。

文章原标题《progressive-tools10-best-frameworks-and-libraries》

作者 :Anton Shaleynikov

译者:虎说八道


精彩活动

猿媛们,快来领取你的技术成绩单!

识别下方二维码

看看你在云栖社区排第多少位?

你的2018关键词是什么?

进入H5还能抽相机、阿里云代金券、公仔等好礼!


-END-

云栖社区

ID:yunqiinsight

云计算丨互联网架构丨大数据丨机器学习丨运维


 
云栖社区 更多文章 基于大数据搭建社交好友推荐系统 阿里Q3财报:阿里云去年营收破百亿,连续11个季度保持规模翻番 凑单算法——基于Graph Embedding的bundle mining 利用函数计算实现网络游戏或视频直播中的敏感词检测 机器学习新手必学十大算法指南
猜您喜欢 2016年4月30日,今日石油资讯(祝天下所有石油人节日快乐) (29) 剖析String \/ 计算机程序的思维逻辑 Awesome Chrome Plugins iOS被忽视的Extension开发 百度停止社招之后,第一个破例名额竟然是他