1. 程式人生 > >人工智慧開源工具(框架)

人工智慧開源工具(框架)


摘要: 本文講了10個熱門的人工智慧開源工具/框架。

下面是我們今天要講的10個熱門的人工智慧開源工具/框架。

1.TensorFlow

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的裝置級計算機視覺:基於裝置級的計算機視覺模型實現光學字元識別,進行實時翻譯。

2.Apache SystemML

利用大資料進行機器學習的最佳開源工具。

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還可在一臺機器上執行的更大的應用程式的上下文中,執行聚類等無監督學習任務。

3.Caffe

Caffe是一種清晰而高效的深度學習框架。

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已經為視覺、語音和多媒體領域的學術研究專案,啟動原型,甚至大規模工業應用提供支援。

#4.Apache Mahout

Apache Mahout是一個分散式線性代數框架,提供了一些經典的機器學習演算法。

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. 矩陣和向量庫。

5.OpenNN

OpenNN是一個用c++編寫的開源類庫,它實現了神經網路建模。

Opennn (開放神經網路圖書館)以前被稱為Flood,它是以R. Lopez在2008年泰羅尼亞技術大學的博士論文《在工程變分問題的神經網路》為基礎開發的。

Opennn使用一組函式實現了資料探勘,並且,可以使用一個API將這些函式嵌入到其他軟體工具中,使軟體工具和預測分析任務之間進行互動。Opennn的主要優點就是它的高效能。由於採用c++開發,因此它有更好的記憶體管理和更高的處理速度,並利用 OpenMP 和 GPU 加速度(CUDA)實現 CPU 並行化。

Opennn包中含有單元測試、許多示例和大量文件。為神經網路演算法和應用的研究開發提供了一個有效的框架。神經網路設計是一個基於OpenNN的專業預測分析工具,這就意味著神經網路設計的神經引擎是基於 OpenNN 建立的。

OpenNN旨在從資料集和數學模型中進行學習。

資料集

特徵迴歸

模式識別

時間序列預測

數學模型

最佳控制

最佳形狀設計

資料集和數學模型

反向問題

6.Torch

Torch是一個開源機器學習庫、科學計算框架和基於Lua程式語言的指令碼語言。

功能

  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上建立的。

7.Neuroph

Neuroph是一種用 Java 編寫的面向物件的神經網路框架。

Neuroph可用於在Java程式中建立和訓練神經網路,它提供了Java類庫以及用於建立和訓練神經網路的GUI工具easyNeurons。Neuroph是一個輕量級的Java神經網路框架,可用於開發常見的神經網路架構。它包含一個設計良好的開源Java庫,其中包含少量與基本神經網路概念對應的基礎類。它還有一個很好的GUI神經網路編輯器來快速建立Java神經網路元件。目前,已經在Apache 2.0許可下作為開源釋出出來。

Neuroph的核心類與人工神經元、神經元層、神經元連線、權重、傳遞函式、輸入函式和學習規則等基本神經網路概念對應。Neuroph支援常見的神經網路體系結構,例如具有反向傳播,Kohonen和Hopfield網路的多層感知器。所有的這些類都可以進行擴充套件和定製,以自定義建立神經網路和學習規則。Neuroph同時也支援影象識別。

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聲稱是世界上第一個開源助手,適用於從科學專案到企業軟體應用程式的任何事情。

Mycroft可以在任何地方執行——臺式計算機上、在汽車內或在樹莓派上執行。這是可以自由混合、自由擴充套件和改進的開源軟體。

10.OpenCog

OpenCog是一個旨在構建開源人工智慧框架的專案。

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。