10大热门人工智能开源工具(框架)

643 阅读10分钟
原文链接: click.aliyun.com

下面是我们今天要讲的10 个热门的人工智能开源工具 / 框架。

1.TensorFlow

295775e39f55d9e6e7993cfa1116b8519d125e85  

TensorFlow™ 是一个开源软件库,最初由 Google Brain Team 的研究人员和工程师开发。 TensorFlow 使用数据流图进行数值计算。图中的节点表示数学运算,边表示它们之间通信的多维数据数组(张量)。其架构灵活,你可以使用单个 API 将计算部署到桌面、服务器或移动设备中的一个或多个 CPU 或 GPU 。

TensorFlow 提供了多种 API 。最低级别的 API——TensorFlow Core—— 提供了完整的编程控制。高级 API 则建立在 TensorFlow Core 的顶部。这些更高级别的 API 通常比 TensorFlow Core 更容易学习和使用。此外,更高级别的 API 使得重复性的任务在不同的用户之间变得更容易、更一致。一个高级 API 就像 tf.estimator ,可以 帮助您管理数据集 、 评估器 、 训练和推理。

TensorFlow 中的数据中心单位是张量。一个张量由一组形成任意数量维数组的原始值组成。张量的阶就是它的维数。

一些使用Tensorflow 的Google 应用有:

1.RankBrain: 在www.google.com 上大规模部署用于搜索排名的深度神经网络。

2.Inception图像分类模型: 基准模型和对高度精确的计算机视觉模型的后续研究, 它是 在获得2014 年 Imagenet 图像分类挑战赛的模型基础之上进行构建的。

3.SmartReply: 可自动生成电子邮件响应的Deep LSTM 模型 。

4.Massively Multitask Networks for Drug Discovery:Google 与斯坦福大学合作的识别有效候选药的的 深度 神经网络模型。

5.用于OCR的设备级计算机视觉: 基于设备级的计算机视觉模型实现光学字符识别, 进行 实时翻译 。

资源

Tensorflow网

GitHub

入门指南

2.Apache SystemML

利用大数据进行机器学习的最佳开源工具。

aacef42d14a2947b75de69b37ed6af605b71db25  

SystemML 是由 IBM 创建的机器学习技术,是 Apache 中的顶级项目之一,它是一个灵活、可扩展的机器学习系统。 SystemML 的重要特点如下:

1. 使用类R 和类 Python 语言定制算法。

2. 有多种执行模式,包括Spark MLContext 、 Spark Batch 、 Hadoop Batch 、 Standalone 和 JMLC(Java 机器学习连接器 ) 。

3. 基于数据和聚类特性的自动优化,保证了算法的 高 效率和可扩展性。

4. 将SystemML 视为机器学习的结构化查询语言 SQL 。 SystemML 的最新版本( 1.0.0 )支持: Java 8+ 、Scala 2.11+ 、Python 2.7/3.5+ 、Hadoop 2.6+ 以及 Spark 2.1+ 。

5. 可在Apache Spark 上运行,在 Apache Spark 上, SystemML 通过逐行查看代码,确保代码是否能够在 Apache Spark 聚类上运行。

未来对SystemML 的开发 将 包括:使用GPU 进行额外的深度学习,例如导入和运行神经网络架构以及用于训练的预训练模型。

SystemML的Java机器学习连接器(JMLC)

Java 机器学习连接器( JMLC ) API 是一种编程接口,它在嵌入式时与 SystemML 进行交互。 JMLC 的主要目的是作为一个评分 API ,其中,评分函数是用 SystemML 的 DML 语言表示的。除了评分外,嵌入式 SystemML 还可在一台机器上运行的更大的应用程序的上下文中 , 执行聚类等无监督学习任务。

资源

SystemML网

GitHub

3.Caffe

Caffe 是一种清晰而高效的深度学习框架 。

68893190bbb378713d2c76d6f350146562dbf334  

Caffe 最初由杨庆佳在加州大学伯克利分校读博期间发起,后来由伯克利 AI 研究公司( BAIR )和社区贡献者联合开发。它主要专注于用于计算机视觉应用的卷积神经网络。对于计算机视觉相关的任务来说, Caffe 是一个不错且较为流行的选择,您可以在 Caffe Model Zoo 上注册,下载很多已经成功建模的模型,直接用于开发。

优点

1.Expressive 架构鼓励实用和创新。用配置定义的模型和优化 ,而 不需要硬编码。通过设置单个标志在GPU 机器上进行训练,然后部署聚类或移动设备,实现 CPU 和 GPU 之间的切换。

2. 可扩展代码 更有助于开发 。在Caffe 开发好的 的第一年,就有1,000 多个开发者分享 了 出去,对其做了重大贡献 。

3.Caffe 的高速使理论实验和实际应用得到了完美的结合。 Caffe 使用单个 NVIDIA K40 GPU 每天可处理超过 6000 万张图像。

4. 社区:Caffe 已经为视觉、语音和多媒体领域的学术研究项目,启动原型,甚至大规模工业应用提供支持。

资源

Caffe网站

GitHub

Caffe用户群

框架应用之速成课程

Caffe Model Zoo

4.Apache Mahout

Apache Mahout 是一个 分布式线性代数框架,提供了一些经典的机器学习算法。

dcd72d325af271dfc665e9815d5ed3c688571c16  

Mahout 旨在帮助开发人员方便快捷的实现自己的算法。 Apache Spark 是一种即拿即用的分布式后台,或者也可以将其扩展到其他分布式后台。其特点如下:

1. 数学表达Scala DSL。

2. 支持多种分布式后端(包括Apache Spark )。

3.包含 用于CPU / GPU / CUDA 加速的模块化本地求解器。

4.Apache Mahout 应用的领域包括:协作过滤( CF ),聚类和分类。

功能

1.Taste CF.Taste 是 Sean Owen 在 SourceForge 上发起的一个针对协同过滤( CF )的开源项目,并在 2008 年被赠予 Mahout 。

2. 支持 Map-Reduce 的集群实现包括 : k-Means 、模糊 k-Means 、 Canopy 、 Dirichlet 和 Mean-Shift 算法等。

3. 分布式朴素贝叶斯和互补朴素贝叶斯的分类实现。

4. 用于进化编程的分布式适应度函数。

5. 矩阵和矢量库。

资源

Mahout主页

GitHub

Mahout介绍-Grant Ingersoll

5.OpenNN 

OpenNN 是一个用 c++ 编写的开源类库,它实现了神经网络建模 。

Opennn ( 开放神经网络图书馆 ) 以前被称为 Flood ,它是 以R. Lopez 在 2008 年泰罗尼亚技术大学的博士论文《在工程变分问题的神经网络》为基础开发的 。

d27a9a188301c94f53d655db8af4f4cf3368de50  

Opennn 使用一组函数实现了数据挖掘,并且,可以使用一个 API 将这些函数嵌入到其他软件工具中,使软件工具和预测分析任务之间进行交互。 Opennn 的主要优点就是它的高性能。由于采用 c++ 开发,因此它有更好的内存管理和更高的处理速度,并利用 OpenMP 和 GPU 加速度( CUDA )实现 CPU 并行化。

Opennn 包中含有单元测试、许多示例和大量文档。为神经网络算法和应用的研究开发提供了一个有效的框架。神经网络设计是一个基于 OpenNN 的专业预测分析工具,这就意味着神经网络设计的神经引擎是基于 OpenNN 建立的。

OpenNN 旨在从数据集和数学模型中进行学习。

数据集

特征回归

模式识别

时间序列预测

数学模型

最佳控制

最佳形状设计

数据集和数学模型

反向问题

资源

OpenNN网站 

OpenNN Artelnics GitHub

神经网络设计(Neural Designer)

6.Torch

Torch 是一个开源机器学习库、科学计算框架和基于 Lua 编程语言的脚本语言。

8d95c30df68edc27a95aa3030a8e39ddc9c8aa4e

功能

1. 一个强大的 n 维数组

2. 有很多索引、切片、转换的程序。

3.可 使用 LuaJIT 编写简单的 C 扩展。

4. 线性代数程序

5. 神经网络和基于能量的模型

6. 数字优化程序

7.GPU 支持,更加快速和高效

8. 可嵌入,带有 iOS 和 Android 的后台端口

Torch 供 Facebook 人工智能研究小组、 IBM 、 Yandex 和 Idiap 研究所使用。现在,它已经扩展到 Android 和 iOS 系统上,研究人员也 使用Torch 来构建硬件实现数据流。

Pytorch 是一个 Python 的开源机器学习库,用于自然语言处理等应用,主要由 Facebook 的人工智能研究小组开发, Uber 的概率编程软件 "Pyro " 就是在 Pytorch 上创建的。

资源

Torch网

GitHub

7.Neuroph

Neuroph 是一种 用 Java 编写的面向对象的神经网络框架。

d2a9a6d11a241d2c5cf9a3ab43c2a19c13534cce  

Neuroph 可用于在 Java 程序中创建和训练神经网络,它 提供了Java 类库以及用于创建和训练神经网络的 GUI 工具 easyNeurons 。 Neuroph 是一个轻量级的 Java 神经网络框架,可 用于开发常见的神经网络架构。它包含一个设计良好的开源Java 库,其中包含少量与基本神经网络概念对应的基础类。它还有一个很好的 GUI 神经网络编辑器来快速创建 Java 神经网络组件。目前,已经在 Apache 2.0 许可下作为开源发布出来。

Neuroph 的核心类与人工神经元、神经元层、神经元连接、权重、传递函数、输入函数和学习规则等基本神经网络概念对应。 Neuroph 支持常见的神经网络体系结构,例如具有反向传播, Kohonen 和 Hopfield 网络的多层感知器。所有的这些类都可以进行扩展和定制,以自定义创建神经网络和学习规则。 Neuroph 同时也支持图像识别。

资源

Neuroph网

GitHub

8.Deeplearning4j

Deeplearning4j 是第一个为 Java 和 Scala 编写的商业级开源分布式深度学习库。

Deeplearning4j 旨在成为顶尖的即拿即用设备,而不是只是做一些配置,这使得非专业人员也能够快速的构建模型。

DL4J 可以通过 Keras (包括 TensorFlow , Caffe 和 Theano )从大多数主要框架中导入神经网络模型,它为数据科学家、数据工程师和 DevOps 提供了跨团队工具包,弥合了 Python 生态系统和 JVM 之间的障碍。现在, Keras 是 Deeplearning4j 的 Python API 。

功能

1. 分布式 cpu 和 gpu

2.Java, Scala and Python APIs

3. 适用于微服务体系结构

4. 通过降低迭代次数进行并行训练

5. 在Hadoop 上可伸缩

6. 在AWS 扩展上提供 Gpu 支持

1.Deeplearning4J: 神经网络平台

2.ND4J: Numpy for the JVM

3.DataVec :机器学习 ETL 操作的工具

4.JavaCPP : Java 和 C ++ 之间的桥梁

5.Arbiter :机器学习算法的评估工具

6.RL4J : JVM 的深度增强学习

9.Mycroft

Mycroft 声称是世界上第一个开源助手,适用于从科学项目到企业软件应用程序的任何事情。

 1ed07a31ab4aaf7fe89d6666478a0518afb1f906

Mycroft 可以在任何地方运行 —— 台式计算机上、在汽车内或在树莓派上运行。这是可以自由混合、自由扩展和改进的开源软件。

10.OpenCog

OpenCog 是一个旨在构建开源人工智能框架的项目。

c4891a01317126d962c96d7701bab91a6fbac117  

OpenCog 是认知算法的多元化组合,每种组合都体现了它们的创新之处。但是,认真遵守认知协同原则才是 OpenCog 整体架构强大的原因。 OpenCog 最初是基于 2008 年 “Novamente Cognition Engine” ( NCE )发布的源代码。

1. 一个图表数据库,它包含术语、原子公式、句子和关系作为超图。

2. 一个模理论解算器,作为通用图形查询引擎的一部分,用于执行图和超图模式匹配。

3. 一种称为元优化语义进化搜索的概率遗传程序(MOSES ),最初由在 Google 工作的 Moshe Looks 开发。

4.有一个 基于 OpenPsi 和 Unity 的虚拟世界中的交互学习应用体系。

5. 有一个由Link Grammar 和 RelEx 组成的自然语言输入系统,它们都采用类 AtomSpace 来表示语义和句法的关系。

6. 有一个称为SegSim 的自然语言生成系统,它实现 NLGen 和 NLGen2 。

7.Psi 理论的实现,用于处理情绪状态、驱动和冲动,称为 OpenPsi 。

资源

OpenCog网

GitHub

OpenCog Wiki