审视十大热门的AI框架与资源库 分析优点与劣势
在今天的文章中,我们将审视那些用于人工智能开发的高质量资源库,分析其优点与劣势,同时就部分特性展开讨论。下面,马上开始探索这片人工智能资源库的世界!
1. TensorFlow
“利用数据量图计算实现可扩展机器学习。”
语言: C++或Python。 在初涉AI领域时,大家听说的首款框架几乎必然是谷歌公司的TensorFlow。 TensorFlow是一款开源软件,利用数据流图进行数值计算。这套框架据称拥有一套可运行在任何CPU或GPU之上的计算架构——包括台式机、服务器或者移动设备。另外,这套框架亦可在Python编程语言当中使用。 TensorFlow对被称为节点的数据层进行排序,并根据所获得的任意信息作出决策。
优点:
- 使用易于学习的语言(Python)。
- 使用计算图抽象机制。
- 可配合TensorBoard实现可视化。
劣势:
- 速度较慢,这主要是受到Python语言的影响。
- 缺少充足的预训练模型。
- 并非完全开源。
2. 微软 CNTK
“一套开源深度学习工具集。”
语言: C++. 我们可以将CNTK称为微软的TensorFlow。 微软的这套计算网络工具集是一套能够强化各独立计算网络的模块化与维护能力的资源库,同时提供学习算法与模型描述。 与此同时,CNTK还能够发挥多服务器优势,从而更好地利用大量资源处理任务。
据称其功能与谷歌的TensorFlow非常相似,只是其速度要更快一些。
优点:
- 极具灵活性。
- 允许进行分布式训练。
- 支持C++、C#、Java以及Python。
劣势:
- 其采用一种新型语言实现,即网络描述语言(简称NDL)。
- 缺少可视化能力。
3. Theano
“一款数值计算库”。
语言: Python。
Theano堪称TensorFlow的一位强有力竞争对手,这是一套功能强大的Python库,允许以高效方式进行与多维数组相关的数值运算。 这套库以透明化方式利用GPU(而非CPU)执行数据密集型计算,因此运算效率很高。正因为如此,Theano早在约十年之前就已经被引入至大规模计算密集型任务当中。 然而,2017年9月开发团队宣布Theano的主要开发工作将于2017年11月1.0版本发布后正式停止。
当然,这一切都不足以影响Theano本身那强大的表现。您仍可随时利用其开展自己的深度学习研究工作。
优点:
- 针对CPU与GPU进行了适当优化。
- 在数值运算任务方面效率可观。
劣势:
- 与其它资源库相比,Theano显得较为原始且底层。
- 需要利用其它库才能获得高级抽象能力。
- 在AWS上运行时存在一点bug。
4. Caffe
“快速且开放的深度学习框架。” 语言: C++。 Caffe是一款强大的深度学习框架。 与本份清单上列出的其它框架选项一样,Caffe同样拥有极为出色的深度学习研究速度与效率。 利用Caffe,您能够非常轻松地构建起卷积神经网络(简称CNN)以实现图像分类。Caffe能够在GPU上运行良好,从而显著提升运行期间的速度表现。
Caffe主类:
优点:
- 提供Python与MATLAB绑定。
- 强大的性能表现。
- 可在无需编写代码的前提下进行模型训练。
劣势:
- 递归网络较差。
- 对新架构支持效果一般。
5. Keras
“适合人类的深度学习方案。” 语言: Python。 Keras是一套由Python编写而成的开源神经网络库。 与TensorFLow、CNTK乃至Theano不同,Keras并不属于端到端机器学习框架。 相反,其作为一个接口面向各类其它框架提供高层级抽象,从而使得神经网络的配置变得更为简单。
谷歌公司的TensorFlow目前支持将Keras作为后端,而微软的CNTK亦将很快提供同样的支持选项。
优点:
- 具备用户友好特性。
- 易于扩展。
- 可同时在CPU与GPU上无缝运行。
- 能够以无缝方式同Theano及TensorFlow协作。
劣势: 无法作为独立框架加以使用。
6. Torch
“一套开源机器学习库。” 语言: C。 Torch是一套用于科学及数值运算的开源机器学习库。 这是一套基于——不是Python了哦——Lua编程语言的库。 通过提供数量庞大的算法选项,其显著简化了深度学习研究的门槛并提升了效率与速度。Torch拥有一个强大的N维数组,可帮助用户轻松完成分片及索引等操作。其还提供多种线性代数例程与神经网络模型。
优点:
- 极具灵活性。
- 可观的速度及效率。
- 提供大量预训练模型。
劣势:
- 说明文档不够清晰。
- 缺少可立即使用的即插即用代码。
- 基于Lua这种不太流行的语言。
7. Accord.NET
“面向.NET的机器学习、计算机视觉、统计以及通用科学计算。” 语言: C#。 这是一份专门献给C#程序员的厚礼。 Accord.NET框架是一套.NET机器学习框架,可轻松完成音频与图像的处理。
这套框架能够高效处理数值优化、人工神经网络甚至是可视化任务。除此之外,Accord.NET还擅长计算机视觉与信号处理,亦可轻松实现各类算法。
优点:
- 拥有庞大而活跃的开发团队。
- 说明文档质量极高。
- 高质量可视化能力。
劣势:
- 并不算非常流行。
- 相较于TensorFlow速度更慢。
8. Spark MLlib “一套可扩展的机器学习库。” 语言: Scala。 Apache的Spark MLlib是一套极具可扩展性的机器学习库。 其适用于Java、Scala、Python甚至是R等语言,且效率极高,能够与Python库及R库中的numpy进行互操作。 MLlib能够轻松被插入至Hadoop工作流当中。其提供多种机器学习算法,具体包括分类、回归与聚类等等。
这套强大的库在处理超大规模数据时速度极快。
优点:
- 在处理超大规模数据时速度极快。
- 适用于多种语言。
劣势:
- 拥有陡峭的学习曲线。
- 仅可面向Hadoop实现即插即用。
9. Sci-kit Learn
“Python中的机器学习实现方案。” 语言: Python。 Sci-kit learn是一套强大的Python库,主要用于机器学习当中的模型构建类场景。 由于利用numpy、SciPy以及matplotlib等其它库构建而成,因此其能够以极高效率处理各类统计建模技术,具体包括分类、回归以及聚类等。 Sci-kit learn拥有监督学习算法、无监督学习算法以及交叉验证等功能。
优点:
- 可支持多种主要算法。
- 在数据挖掘方面效率很高。
劣势:
- 并非模型构建的最佳选项。
- GPU资源利用效率不高。
10. MLPack
“一套可扩展的C++机器学习库。” 语言: C++。 MLPack是一套以C++语言实现的可扩展机器学习库。由于其以C++编写而成,因此大家可以想见其在内存管理方面颇有心得。 MLPack拥有出色的运行速度,这是由于该库提供多种质量惊人的机器学习算法。这套库对新手非常友好,且提供简单的API供用户使用。
优点:
- 极具可扩展性。
- 提供Python 与C++ 绑定。
劣势:
- 说明文档质量一般。
总结陈词
本文中讨论的各种库选项皆非常高效,且已经被时间证明拥有出色的质量。既然Facebook、谷歌、雅虎、苹果以及微软等巨头级企业都在利用这些库支持自己的深度学习与机器学习项目,您当然也没有理由拒绝,不是吗?