【留备】Ai流行框架和库概述

1f2f9c7c9fb00154ad6c5289372d6f9f

写在最前面:Ai框架和类库当前有很多,主流的还是国际大公司引领,不过他们框架开源程度、计算资源依赖类型和适用场景都不尽相同,下面的每一种框架适用的业务类型也都有不同,以下仅是方便初学者借鉴和选择。切记下面的Ai框架并非银弹,只是极为简单的概述,他们多是基于Ai算法模型的抽象呈现,只有知晓后面的算法才有更好的实际意义,只有通宵分布式计算和操作系统组合管理才能胜任实际的生产环境使用。切切。

 

1. TensorFlow

使用数据流图计算可伸缩机器学习

语言:C ++Python

当初步接触AI时,你可能会听到的第一个框架就是GoogleTensorFlow

TensorFlow是一个使用数据流图进行数值计算的开源软件。这个框架以拥有允许在任何CPUGPU上进行计算的架构而闻名,无论是台式机、服务器还是移动设备。这个框架在Python编程语言中是可用的。

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

优点:

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

·使用计算图抽象。

·用于可视化的TensorBoard的可用性。

缺点:

·这很慢,因为Python不是语言中最快的。

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

·不完全开源。

2.微软的CNTK

开源深度学习工具包

语言:C ++

我们可以称之为微软对GoogleTensorFlow的回应。

微软的计算网络工具包是一个提高计算网络模块化和维护分离计算网络,提供学习算法和模型描述的库。

在需要大量服务器进行操作的情况下,CNTK可以同时利用多台服务器。

据说它的功能与GoogleTensorFlow相近; 但是,它的速度更快。

优点:

·这是非常灵活的。

·允许分布式训练。

·支持C ++C#,JavaPython

缺点:

·一种网络描述语言(NDL)来实现的新的语言。

·缺乏可视化。

3. Theano

数值计算库

语言:Python

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

该库透明地使用GPU来执行数据密集型计算而不是CPU,因此操作效率很高。

出于这个原因,Theano已经为大规模的计算密集型操作提供动力大约十年。

然而,于20179月,宣布Theano的主要发展可能会停止于201711月公布1.0版本后。

这并不意味着它是一个不太强大的库,它仍然值得深入学习。

优点:

正确优化CPUGPU

高效的数值计算任务。

缺点:

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

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

AWS上有点小bug

4.Caffe

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

语言:C ++

Caffe是一个强大的深度学习框架。

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

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

Caffe主要类别:

优点:

PythonMATLAB的绑定可用。

性能强大。

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

缺点:

对于复发性网络不好。

对于新体系架构来说不够好

5.Keras

针对人类的深度学习

语言:Python

Keras是一个用Python编写的开源的神经网络库。

TensorFlowCNTKTheano不同,Keras不是一个端到端的机器学习框架。

相反,它作为一个接口,提供了一个高层次的抽象,这使得不管它的框架是什么,神经网络的配置都比较简单。

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

优点:

它是用户友好型。

它很容易扩展。

CPUGPU上无缝运行。

TheanoTensorFlow无缝工作。

缺点:

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

6.Torch

一个开源的机器学习库

语言:C.

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

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

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

优点:

非常灵活。

高水平的速度和效率。

大量的预训练模型可用。

缺点:

不清楚的文件。

缺乏即时使用的即插即用代码。

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

7. Accord.NET

机器学习、计算机视觉、统计和.NET通用科学计算

语言:C#。

这就是为C#程序员准备的。

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

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

优点:

它有一个庞大而活跃的开发团队。

非常有据可查的框架。

质量可视化。

缺点:

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

TensorFlow慢。

8. Spark MLlib

可扩展的机器学习库

语言:Scala

ApacheSpark MLlib是一个可扩展的机器学习库。

它非常适用于JavaScalaPython甚至R等语言。它非常高效,因为它可以与Python库和R库中的numpy进行互操作。

MLlib可以轻松插入到Hadoop工作流程中。它提供了机器学习算法,如分类、回归和聚类。

这个强大的库在处理大型数据时非常快速。

优点:

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

提供多种语言。

缺点:

陡峭的学习曲线。

即插即用仅适用于Hadoop

9. Sci-kit learn

Python中进行机器学习

语言:Python

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

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

Sci-kit learn监督学习算法、无监督学习算法和交叉验证等功能。

优点:

许多主要算法的可用性。

有效的数据挖掘。

缺点:

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

GPU效率不高。

10. MLPack

可扩展的C ++机器学习库

语言:C ++

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

MLPack以极高的速度运行,因为高质量的机器学习算法与库一起出现。这个库是对新手友好,并提供了一个简单的API使用。

优点:

可扩展。

PythonC ++绑定可用。

缺点:

不是最好的文档。

发表评论

电子邮件地址不会被公开。 必填项已用*标注