十大機器學習框架

已發表: 2017-03-11
目錄顯示
1.張量流
2. 咖啡
3.亞馬遜機器學習
4.阿帕奇辛加
5.微軟 CNTK
6. 火炬
7.雅閣.NET
8. Apache Mahout
9. Theano
10. 頭腦風暴

在深入研究機器學習 (ML) 的世界時,從許多替代方案中選擇一個框架可能是一項令人生畏的任務。 您可能已經熟悉這些名稱,但在決策過程中評估選項很有用。 機器學習世界中有不同的框架、庫、應用程序、工具包和數據集,它們可能會非常令人困惑,尤其是如果您是初學者。 在選擇一個來構建應用程序時,必須習慣流行的 ML 框架。 這就是為什麼我們編制了一份排名前 10 位的機器學習框架列表。

1.張量流

TensorFlow 由 Google Brain 團隊開發,用於不同的語言理解和感知任務。 這個開源框架正被用於深度神經網絡和機器學習的廣泛研究。 作為 Google Brain 的第二個機器學習框架,它與大多數新的 CPU 和 GPU 兼容。 我們每天使用的許多流行的谷歌服務,如 Gmail、語音識別、谷歌照片甚至谷歌搜索都配備了 Tensorflow。

Tensorflow 使用數據流圖來執行複雜的數值任務。 使用包含邊和節點的有向圖來詳細說明數學計算。 這些節點用於實現操作,也可以充當提供數據的端點。 邊也代表不同節點之間的輸入/輸出關聯。

2. 咖啡

Caffe 是一個機器學習框架,其設計以更好的表達、速度和模塊化為重點。 它是利用卷積神經網絡 (CNN) 為計算機視覺/圖像分類而開發的。 Caffe 因其 Model Zoo 廣受歡迎,它是一組無需任何編碼即可實現的預訓練模型。

它更適合構建應用程序,而不是在研發方面表現更好的 Tensorflow。 如果您正在處理具有文本、聲音或時間序列數據的應用程序,請注意,Caffe 不適用於計算機視覺以外的任何用途。 但是,它可以在大量硬件上動態運行,並且只使用一個標誌就可以很好地在 CPU 和 GPU 之間切換。

3.亞馬遜機器學習

亞馬遜為開發人員開發了自己的機器學習服務,稱為 AML。 它是一組工具和嚮導,可用於開發複雜、高端和智能的學習模型,而無需實際修改代碼。 使用 AML,您的應用程序所需的預測可以通過更易於使用的 API 派生。 亞馬遜內部數據科學家使用 AML 背後的技術為其亞馬遜雲服務提供支持,並且具有高度可擴展性、動態性和靈活性。 AML 可以連接到存儲在 Amazon S3、RDS 或 Redshift 中的數據,並執行二進制分類、回歸或多類分類等操作以創建新模型。

4.阿帕奇辛加

Apache Singa 主要專注於使用模型分區和並行化訓練過程的分佈式深度學習。 它提供了一個簡單而健壯的編程模型,可以跨節點集群工作。 主要應用是圖像識別和自然語言處理(NLP)。

Singa 是使用基於直觀層抽象的編程模型開發的,並支持一系列深度學習模型。 由於它基於非常靈活的架構,它可以運行同步和異步甚至混合訓練方法。 Singa 的技術棧由三個重要組件組成:IO、模型和核心。 IO 組件包含用於向網絡和磁盤讀取/寫入數據的類。 核心組件處理張量操作和內存管理功能。 模型包含用於機器學習模型的算法和數據結構。

5.微軟 CNTK

CNTK(認知工具包)是微軟的開源機器學習框架。 雖然它在語音識別領域更受歡迎,但 CNTK 也可以用於文本和圖像訓練。 它支持多種機器學習算法,例如 AS CNN、LSTM、RNN、序列到序列和前饋,是目前最具動態性的機器學習框架之一。 CNTK 支持多種硬件類型,包括各種 CPU 和 GPU。

兼容性是 CNTK 的一大亮點。 它也被譽為目前最具表現力和易於使用的機器學習架構。 在 CNTK 上,您可以使用 C++ 和 python 等語言,並使用內置的訓練模型或構建自己的模型。

6. 火炬

Torch 可以說是最簡單的機器學習框架,可以快速輕鬆地設置和啟動,特別是如果您使用的是 Ubuntu。 Torch 於 2002 年在紐約大學開發,廣泛用於 Twitter 和 Facebook 等大型科技公司。 Torch 是用一種叫做 Lua 的語言編碼的,這種語言不常見但易於閱讀和理解。 Torch 的一些好處可以歸功於這種友好的編程語言,它帶有有用的錯誤消息、巨大的示例代碼庫、指南和有用的社區。

7.雅閣.NET

Accord.NET 是一個基於.NET 的開源機器學習框架,非常適合科學計算。 它由不同的庫組成,可用於模式識別、人工神經網絡、統計數據處理、線性代數、圖像處理等應用程序。該框架包括可作為安裝程序、NuGet 包和源代碼使用的庫。 Accord.NET 有一個矩陣庫,可促進代碼的可重用性和漸進式算法更改。

8. Apache Mahout

作為 Apache 軟件基金會的一個免費和開源項目,Apache Mahout 的構建目標是為集群、分類和協同過濾等應用程序開發免費的分佈式或可擴展的 ML 框架。 Mahout 中還提供了用於不同計算操作的 Java 集合和 Java 庫。

Apache Mahout 使用 MapReduce 範例部署在 Hadoop 之上。 一個偉大的應用程序是立即將數據轉化為洞察力。 連接存儲在 Hadoop 上的大數據後,Mahout 可以幫助數據科學工具從數據集中找到有意義的模式。

9. Theano

Theano 於 2007 年在以機器學習算法聞名於世的蒙特利爾大學開發。 雖然被視為低端機器學習框架,但它靈活且速度極快。 框架拋出的錯誤消息因無用且神秘而臭名昭著。 撇開這些不談,Theano 是一個更適合研究任務的平台,並且在這方面非常有幫助。

它主要用作高端抽象系統的基礎平台,將 API 包裝器發送到 Theano。 一些流行的庫的例子有 Lasagne、Blocks 和 Keras。 使用 Theano 的一個缺點是您必須修改一些解決方法才能獲得多 GPU 支持。

10. 頭腦風暴

考慮到其簡單性和靈活性,Brainstorm 是最容易掌握的機器學習框架之一。 它使神經網絡的工作同時變得更快、更有趣。 Brainstorm 完全用 Python 編寫,可在多個後端系統上順利運行。

Brainstorm 提供了兩個使用 Python 的“處理程序”或數據 API——一個用於 Numpy 庫的 CPU,另一個用於使用 CUDA 的 GPU。 大多數繁重的工作都是由 Python 腳本完成的,這意味著幾乎沒有豐富的前端 UI。