人工智慧開源框架介紹(整理)

image.png
前人栽樹,後人乘涼.O(∩_∩)O哈哈~
TensorFlow
TensorFlow™是一個開源軟體庫,最初由Google Brain Team的研究人員和工程師開發。(中文社群)
TensorFlow使用資料流圖進行數值計算。圖中的節點表示數學運算,邊表示它們之間通訊的多維資料陣列(張量)。
其架構靈活,你可以使用單個API將計算部署到桌面、伺服器或移動裝置中的一個或多個CPU或GPU。
TensorFlow提供了多種API。最低級別的API——TensorFlow Core——提供了完整的程式設計控制。
高階API則建立在TensorFlow Core的頂部。
這些更高級別的API通常比TensorFlow Core更容易學習和使用。
此外,更高級別的API使得重複性的任務在不同的使用者之間變得更容易、更一致。
一個高階API就像tf.estimator,可以幫助您管理資料集、評估器、訓練和推理。

image.png
TensorFlow中的資料中心單位是張量。
一個張量由一組形成任意數量維陣列的原始值組成。張量的階就是它的維數。
使用TensorFlow開發的例子
工程名 | 介紹 |
---|---|
RankBrain | 在www.google.com上大規模部署用於搜尋排名的深度神經網路。 |
Inception影象分類模型 | 基準模型和對高度精確的計算機視覺模型的後續研究,它是在獲得2014年Imagenet影象分類挑戰賽的模型基礎之上進行構建的。 |
SmartReply | 可自動生成電子郵件響應的Deep LSTM模型。 |
Massively Multitask Networks for Drug Discovery | Google與斯坦福大學合作的識別有效候選藥的的深度神經網路模型。 |
用於OCR的裝置級計算機視覺 | 基於裝置級的計算機視覺模型實現光學字元識別,進行實時翻譯。 |
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進行額外的深度學習,例如匯入和執行神經網路架構以及用於訓練的預訓練模型。

image.png
Caffe
Caffe是一種清晰而高效的深度學習框架。 官網
Caffe最初由楊慶佳在加州大學伯克利分校讀博期間發起,後來由伯克利AI研究公司(BAIR)和社群貢獻者聯合開發。
它主要專注於用於計算機視覺應用的卷積神經網路。
對於計算機視覺相關的任務來說,Caffe是一個不錯且較為流行的選擇,您可以在Caffe Model Zoo上註冊,下載很多已經成功建模的模型,直接用於開發。
Caffe的重要特點如下:
1.Expressive架構鼓勵實用和創新。用配置定義的模型和優化,而不需要硬編碼。通過設定單個標誌在GPU機器上進行訓練,然後部署聚類或移動裝置,實現CPU和GPU之間的切換。
2.可擴充套件程式碼更有助於開發。在Caffe開發好的的第一年,就有1,000多個開發者分享了出去,對其做了重大貢獻。
3.Caffe的高速使理論實驗和實際應用得到了完美的結合。Caffe使用單個NVIDIA K40 GPU每天可處理超過6000萬張影象。
4.社群:Caffe已經為視覺、語音和多媒體領域的學術研究專案,啟動原型,甚至大規模工業應用提供支援。

image.png
Apache Mahout
Apache Mahout是一個分散式線性代數框架,提供了一些經典的機器學習演算法。 官網
Mahout旨在幫助開發人員方便快捷的實現自己的演算法。
Apache Spark是一種即拿即用的分散式後臺,或者也可以將其擴充套件到其他分散式後臺。
其特點如下:
1.數學表達Scala DSL。
2.支援多種分散式後端(包括Apache Spark)。
3.包含用於CPU / GPU / CUDA加速的模組化本地求解器。
4.Apache Mahout應用的領域包括:協作過濾(CF),聚類和分類。

image.png
OpenNN
OpenNN是一個用c++編寫的開源類庫,它實現了神經網路建模。 官網
Opennn (開放神經網路圖書館)以前被稱為Flood,它是以R. Lopez在2008年泰羅尼亞技術大學的博士論文《在工程變分問題的神經網路》為基礎開發的。
Opennn使用一組函式實現了資料探勘,並且,可以使用一個API將這些函式嵌入到其他軟體工具中,使軟體工具和預測分析任務之間進行互動。
Opennn的主要優點就是它的高效能。
由於採用c++開發,因此它有更好的記憶體管理和更高的處理速度,並利用 OpenMP 和 GPU 加速度(CUDA)實現 CPU 並行化。
Opennn包中含有單元測試、許多示例和大量文件。為神經網路演算法和應用的研究開發提供了一個有效的框架。
神經網路設計是一個基於OpenNN的專業預測分析工具,這就意味著神經網路設計的神經引擎是基於 OpenNN 建立的。
OpenNN旨在從資料集和數學模型中進行學習。

image.png
Torch
Torch是一個開源機器學習庫、科學計算框架和基於Lua程式語言的指令碼語言。 官網
Torch供 Facebook 人工智慧研究小組、 IBM、 Yandex 和 Idiap 研究所使用。
現在,它已經擴充套件到 Android 和 iOS系統上,研究人員也使用Torch來構建硬體實現資料流。

image.png
Pytorch是一個Python的開源機器學習庫,用於自然語言處理等應用,主要由 Facebook 的人工智慧研究小組開發,Uber 的概率程式設計軟體"Pyro"就是在Pytorch上建立的。
Neuroph
Neuroph是一種用 Java 編寫的面向物件的神經網路框架。 官網
Neuroph可用於在Java程式中建立和訓練神經網路,它提供了Java類庫以及用於建立和訓練神經網路的GUI工具easyNeurons。
Neuroph是一個輕量級的Java神經網路框架,可用於開發常見的神經網路架構。它包含一個設計良好的開源Java庫,其中包含少量與基本神經網路概念對應的基礎類。
它還有一個很好的GUI神經網路編輯器來快速建立Java神經網路元件。目前,已經在Apache 2.0許可下作為開源釋出出來。
Neuroph的核心類與人工神經元、神經元層、神經元連線、權重、傳遞函式、輸入函式和學習規則等基本神經網路概念對應。
Neuroph支援常見的神經網路體系結構,例如具有反向傳播,Kohonen和Hopfield網路的多層感知器。
所有的這些類都可以進行擴充套件和定製,以自定義建立神經網路和學習規則。Neuroph同時也支援影象識別。

image.png
Deeplearning4j
Deeplearning4j是第一個為Java和Scala編寫的商業級開源分散式深度學習庫。 官網
Deeplearning4j旨在成為頂尖的 即拿即用
裝置,而不是隻是做一些配置,這使得非專業人員也能夠快速的構建模型。
DL4J可以通過Keras(包括TensorFlow,Caffe和Theano)從大多數主要框架中匯入神經網路模型,它為資料科學家、資料工程師和DevOps提供了跨團隊工具包,彌合了Python生態系統和JVM之間的障礙。
現在,Keras是Deeplearning4j的Python API。

image.png
Mycroft
Mycroft聲稱是世界上第一個開源助手,適用於從科學專案到企業軟體應用程式的任何事情。 官網
Mycroft可以在任何地方執行——臺式計算機上、在汽車內或在樹莓派上執行。這是可以自由混合、自由擴充套件和改進的開源軟體。

image.png
OpenCog
OpenCog是一個旨在構建開源人工智慧框架的專案。 官網
OpenCog是認知演算法的多元化組合,每種組合都體現了它們的創新之處。但是,認真遵守認知協同原則才是OpenCog整體架構強大的原因。
OpenCog最初是基於2008年“Novamente Cognition Engine”(NCE)釋出的原始碼。

image.png
PS:
每一個都很強大,感謝大神分享,不過看了介紹我對 Mycroft更加感興趣了.