10个最佳的人工智能开发框架和AI库
编辑推荐:本文主要讲解了10个人工智能开发框架和AI库分别是什么及优缺点。本文来自于云+社区,由火龙果软件Anna编辑、推荐。人工智能(AI)已经存在很长时间了。然而,由于这一领域的巨大进步,近年来它已成为一个流行语。人工智能曾经被称为一个完整的书呆子和天才的领域,但由于各种开发库和框架的发展,它已经成为一个友好的IT领域,并有很多人正走进它。
在这篇文章中,我们将研究用于人工智能的优质库,它们的优缺点以及它们的一些特征。让我们深入并探索这些人工智能库的世界!
1.TensorFlow
“使用数据流图表的可伸缩机器学习的计算”
语言:C++或Python。
当进入AI时,你会听到的第一个框架之一就是Google的TensorFlow。
TensorFlow是一个使用数据流图表进行数值计算的开源软件。这个框架被称为具有允许在任何CPU或GPU上进行计算的架构,无论是台式机、服务器还是移动设备。这个框架在Python编程语言中是可用的。
TensorFlow对称为节点的数据层进行排序,并根据所获得的任何信息做出决定。点击查看详情!
优点:
使用易于学习的语言(Python)。
使用计算图表抽象。
用于TensorBoard的可用性的可视化。
缺点:
这很慢,因为Python不是语言中最快的。
缺乏许多预先训练的模型。
不完全开源。
2.MicrosoftCNTK
“开源深度学习工具包”
语言:C++。
我们可以称之为微软对Google的TensorFlow的回应。
微软的计算网络工具包是一个增强分离计算网络模块化和维护的库,提供学习算法和模型描述。
在需要大量服务器进行操作的情况下,CNTK可以同时利用多台服务器。
据说它的功能与Google的TensorFlow相近;但是,它会更快。在这里了解更多。
优点:
这是非常灵活的。
允许分布式训练。
支持C++、C#、Java和Python。
缺点:
它以一种新的语言――网络描述语言(NetworkDescriptionLanguage,NDL)来实现。
缺乏可视化。
3.Theano
“数值计算库”
语言:Python。
Theano是TensorFlow的强有力竞争者,是一个功能强大的Python库,允许以高效率的方式进行涉及多维数组的数值操作。
Theano库透明地使用GPU来执行数据密集型计算而不是CPU,因此操作效率很高。
出于这个原因,Theano已经被用于为大规模的计算密集型操作提供动力大约十年。
然而,在2017年9月,宣布Theano的主要开发将于2017年11月发布的1.0版本后停止。
这并不意味着它是一个不够强大的库。你仍然可以随时进行深入的学习研究。在这里了解更多。
Theano
data-intensivecomputations
优点:
正确优化CPU和GPU。
有效的数字任务。
缺点:
与其他库相比,原生Theano有点低级。
需要与其他库一起使用以获得高度的抽象化。
AWS上有点bug。
4.Caffe
“快速、开源的深度学习框架”
语言:C++。
Caffe是一个强大的深度学习框架。
像这个清单上的其他框架一样,深度学习的研究速度非常快。
借助Caffe,您可以非常轻松地构建用于图像分类的卷积神经网络(CNN)。Caffe在GPU上运行良好,这有助于在运行期间提高速度。查看主页获取更多信息。
Caffe主要的类有:
mainclasses
优点:
Python和MATLAB的绑定可用。
性能表现良好。
无需编写代码即可进行模型的训练。
缺点:
对于经常性网络不太好。
新体系结构不太好。
5.Keras
“人类的深度学习”
语言:Python。
Keras是一个用Python编写的开源的神经网络库。
与TensorFlow、CNTK和Theano不同,Keras不是一个端到端的机器学习框架。
相反,它作为一个接口,提供了一个高层次的抽象化,这使得无论它坐落在哪个框架上,神经网络的配置都会变得容易。
谷歌的TensorFlow目前支持Keras作为后端,而微软的CNTK也会在很短的时间内做到这一点。在这里了解更多。
优点:
它是用户友好的。
它很容易扩展。
在CPU和GPU上无缝运行。
与Theano和TensorFlow无缝工作。
缺点:
不能有效地用作独立的框架。
6.Torch
“一个开源的机器学习库”
语言:C。
Torch是一个用于科学和数字操作的开源机器学习库。
这是一个基于Lua编程语言而非Python的库。
Torch通过提供大量的算法,使得深度学习研究更容易,并且提高了效率和速度。它有一个强大的N维数组,这有助于切片和索引等操作。它还提供了线性代数程序和神经网络模型。点击查看详情!
优点:
非常灵活。
高水平的速度和效率。
大量的预训练模型可用。
缺点:
不清楚的文献记录。
缺乏即时使用的即插即用代码。
它基于一种不那么流行的语言――Lua。
7.Accord.NET
“机器学习、计算机视觉、统计和.NET通用科学计算”
语言:C#。
这是专为C#程序员设计的。
Accord.NET框架是一个.NET机器学习框架,使音频和图像处理变得简单。
这个框架可以有效地处理数值优化、人工神经网络,甚至可视化。除此之外,Accord.NET对计算机视觉和信号处理的功能非常强大,同时也使得算法的实现变得简单。检查主页面。
优点:
它有一个强大而积极的开发团队。
非常有据可查的框架。
质量可视化。
缺点:
不是一个非常流行的框架。
比TensorFlow慢。
8.SparkMLlib
“可扩展的机器学习库”
语言:Scala。
Apache的SparkMLlib是一个非常可扩展的机器学习库。
它非常适用于诸如Java、Scala、Python,甚至R等语言。它非常高效,因为它可以与Python库和R库中的numpy进行互操作。
MLlib可以轻松插入到Hadoop工作流程中。它提供了机器学习算法,如分类、回归和聚类。
这个强大的库在处理大型数据时非常快速。
优点:
对于大规模数据处理非常快速。
提供多种语言。
缺点:
陡峭的学习曲线。
即插即用仅适用于Hadoop。
9.Sci-kitLearn
“用Python的机器学习”
语言:Python。
Sci-kitlearn是一个非常强大的机器学习Python库,主要用于构建模型。
使用numpy、SciPy和matplotlib等其他库构建,对统计建模技术(如分类、回归和聚类)非常有效。
Sci-kitlearn带有监督学习算法、无监督学习算法和交叉验证等功能。点击查看详情!
优点:
许多主要算法的可用性。
有效的数据挖掘。
缺点:
不是构建模型的最佳选择。
GPU效率不高。
10.MLPack
“可扩展的C++机器学习库”
语言:C++。
MLPack是一个用C++实现的可扩展的机器学习库。因为它是用C++编写的,所以你可以猜测它对于内存管理是非常好的。
MLPack以极高的速度运行,因为高质量的机器学习算法与库一起出现。这个库是对新手友好的,并提供了一个简单的API使用。点击查看详情!
优点:
非常可扩展。
Python和C++绑定可用。
缺点:
不是最好的文献记录。
人工智能开源框架介绍(整理)
image.png前人栽树,后人乘凉.O(∩_∩)O哈哈~
TensorFlowTensorFlow™是一个开源软件库,最初由GoogleBrainTeam的研究人员和工程师开发。(中文社区)
TensorFlow使用数据流图进行数值计算。图中的节点表示数学运算,边表示它们之间通信的多维数据数组(张量)。
其架构灵活,你可以使用单个API将计算部署到桌面、服务器或移动设备中的一个或多个CPU或GPU。
TensorFlow提供了多种API。最低级别的API——TensorFlowCore——提供了完整的编程控制。
高级API则建立在TensorFlowCore的顶部。
这些更高级别的API通常比TensorFlowCore更容易学习和使用。
此外,更高级别的API使得重复性的任务在不同的用户之间变得更容易、更一致。
一个高级API就像tf.estimator,可以帮助您管理数据集、评估器、训练和推理。
image.pngTensorFlow中的数据中心单位是张量。
一个张量由一组形成任意数量维数组的原始值组成。张量的阶就是它的维数。
使用TensorFlow开发的例子工程名介绍RankBrain在www.google.com上大规模部署用于搜索排名的深度神经网络。Inception图像分类模型基准模型和对高度精确的计算机视觉模型的后续研究,它是在获得2014年Imagenet图像分类挑战赛的模型基础之上进行构建的。SmartReply可自动生成电子邮件响应的DeepLSTM模型。MassivelyMultitaskNetworksforDrugDiscoveryGoogle与斯坦福大学合作的识别有效候选药的的深度神经网络模型。用于OCR的设备级计算机视觉基于设备级的计算机视觉模型实现光学字符识别,进行实时翻译。ApacheSystemML利用大数据进行机器学习的最佳开源工具。官网
SystemML是由IBM创建的机器学习技术,是Apache中的顶级项目之一,它是一个灵活、可扩展的机器学习系统。
SystemML的重要特点如下:1.使用类R和类Python语言定制算法。2.有多种执行模式,包括SparkMLContext、SparkBatch、HadoopBatch、Standalone和JMLC(Java机器学习连接器)。3.基于数据和聚类特性的自动优化,保证了算法的高效率和可扩展性。4.将SystemML视为机器学习的结构化查询语言SQL。SystemML的最新版本(1.0.0)支持:Java8+、Scala2.11+、Python2.7/3.5+、Hadoop2.6+以及Spark2.1+。5.可在ApacheSpark上运行,在ApacheSpark上,SystemML通过逐行查看代码,确保代码是否能够在ApacheSpark聚类上运行。
未来对SystemML的开发将包括:使用GPU进行额外的深度学习,例如导入和运行神经网络架构以及用于训练的预训练模型。
image.pngCaffeCaffe是一种清晰而高效的深度学习框架。官网
Caffe最初由杨庆佳在加州大学伯克利分校读博期间发起,后来由伯克利AI研究公司(BAIR)和社区贡献者联合开发。
它主要专注于用于计算机视觉应用的卷积神经网络。
对于计算机视觉相关的任务来说,Caffe是一个不错且较为流行的选择,您可以在CaffeModelZoo上注册,下载很多已经成功建模的模型,直接用于开发。
Caffe的重要特点如下:1.Expressive架构鼓励实用和创新。用配置定义的模型和优化,而不需要硬编码。通过设置单个标志在GPU机器上进行训练,然后部署聚类或移动设备,实现CPU和GPU之间的切换。2.可扩展代码更有助于开发。在Caffe开发好的的第一年,就有1,000多个开发者分享了出去,对其做了重大贡献。3.Caffe的高速使理论实验和实际应用得到了完美的结合。Caffe使用单个NVIDIAK40GPU每天可处理超过6000万张图像。4.社区:Caffe已经为视觉、语音和多媒体领域的学术研究项目,启动原型,甚至大规模工业应用提供支持。
image.pngApacheMahoutApacheMahout是一个分布式线性代数框架,提供了一些经典的机器学习算法。官网
Mahout旨在帮助开发人员方便快捷的实现自己的算法。
ApacheSpark是一种即拿即用的分布式后台,或者也可以将其扩展到其他分布式后台。
其特点如下:1.数学表达ScalaDSL。2.支持多种分布式后端(包括ApacheSpark)。3.包含用于CPU/GPU/CUDA加速的模块化本地求解器。4.ApacheMahout应用的领域包括:协作过滤(CF),聚类和分类。
image.pngOpenNNOpenNN是一个用c++编写的开源类库,它实现了神经网络建模。官网
Opennn(开放神经网络图书馆)以前被称为Flood,它是以R.Lopez在2008年泰罗尼亚技术大学的博士论文《在工程变分问题的神经网络》为基础开发的。
Opennn使用一组函数实现了数据挖掘,并且,可以使用一个API将这些函数嵌入到其他软件工具中,使软件工具和预测分析任务之间进行交互。
Opennn的主要优点就是它的高性能。
由于采用c++开发,因此它有更好的内存管理和更高的处理速度,并利用OpenMP和GPU加速度(CUDA)实现CPU并行化。
Opennn包中含有单元测试、许多示例和大量文档。为神经网络算法和应用的研究开发提供了一个有效的框架。
神经网络设计是一个基于OpenNN的专业预测分析工具,这就意味着神经网络设计的神经引擎是基于OpenNN建立的。
OpenNN旨在从数据集和数学模型中进行学习。
image.pngTorchTorch是一个开源机器学习库、科学计算框架和基于Lua编程语言的脚本语言。官网
Torch供Facebook人工智能研究小组、IBM、Yandex和Idiap研究所使用。
现在,它已经扩展到Android和iOS系统上,研究人员也使用Torch来构建硬件实现数据流。
image.pngPytorch是一个Python的开源机器学习库,用于自然语言处理等应用,主要由Facebook的人工智能研究小组开发,Uber的概率编程软件"Pyro"就是在Pytorch上创建的。
NeurophNeuroph是一种用Java编写的面向对象的神经网络框架。官网
Neuroph可用于在Java程序中创建和训练神经网络,它提供了Java类库以及用于创建和训练神经网络的GUI工具easyNeurons。
Neuroph是一个轻量级的Java神经网络框架,可用于开发常见的神经网络架构。它包含一个设计良好的开源Java库,其中包含少量与基本神经网络概念对应的基础类。
它还有一个很好的GUI神经网络编辑器来快速创建Java神经网络组件。目前,已经在Apache2.0许可下作为开源发布出来。
Neuroph的核心类与人工神经元、神经元层、神经元连接、权重、传递函数、输入函数和学习规则等基本神经网络概念对应。
Neuroph支持常见的神经网络体系结构,例如具有反向传播,Kohonen和Hopfield网络的多层感知器。
所有的这些类都可以进行扩展和定制,以自定义创建神经网络和学习规则。Neuroph同时也支持图像识别。
image.pngDeeplearning4jDeeplearning4j是第一个为Java和Scala编写的商业级开源分布式深度学习库。官网
Deeplearning4j旨在成为顶尖的即拿即用设备,而不是只是做一些配置,这使得非专业人员也能够快速的构建模型。
DL4J可以通过Keras(包括TensorFlow,Caffe和Theano)从大多数主要框架中导入神经网络模型,它为数据科学家、数据工程师和DevOps提供了跨团队工具包,弥合了Python生态系统和JVM之间的障碍。
现在,Keras是Deeplearning4j的PythonAPI。
image.pngMycroftMycroft声称是世界上第一个开源助手,适用于从科学项目到企业软件应用程序的任何事情。官网
Mycroft可以在任何地方运行——台式计算机上、在汽车内或在树莓派上运行。这是可以自由混合、自由扩展和改进的开源软件。
image.pngOpenCogOpenCog是一个旨在构建开源人工智能框架的项目。官网
OpenCog是认知算法的多元化组合,每种组合都体现了它们的创新之处。但是,认真遵守认知协同原则才是OpenCog整体架构强大的原因。
OpenCog最初是基于2008年“NovamenteCognitionEngine”(NCE)发布的源代码。
image.pngPS:每一个都很强大,感谢大神分享,不过看了介绍我对Mycroft更加感兴趣了.
参考10大热门人工智能开源工具(框架]