歡迎光臨
每天分享高質量文章

10 個用於 AI 開發的框架和庫

(點選上方公眾號,可快速關註)


編譯:飛哥的咖啡,英文:dashbouquet

http://blog.jobbole.com/113499/


儘管人工智慧(AI )已經存在很長時間了,但因為這一領域取得的巨大進步,它最近成為了一個流行詞。

AI 曾被認為是狂熱愛好者和天才的專屬領域,但由於各種庫和框架的蓬勃發展,它慢慢成為了一個不那麼排外的 IT 領域,並吸引了大量的人才投入其中。

在本文中,我們將介紹那些用於 AI 開發的高質量庫,並談談它們的優缺點,以及特性。

現在,讓我們進入並探索 AI 庫的世界吧。


TensorFlow:“使用資料流程圖對可拓展的機器學習進行計算”

語言:C++

84 725 ★

初接觸 AI 時,你聽說的首批框架應該包含了谷歌的 TensorFlow。

TensorFlow 是一個使用資料流程圖進行數值計算的開源軟體。這個不錯的框架因其架構而聞名,它允許在任何 CPU 或 GPU 上進行計算,不管是桌面、伺服器,還是移動裝置。它可在 Python 程式語言中使用。

TensorFlow 主要是透過資料層進行排序,而我們可以呼叫節點,並根據所得到的資訊進行決策。

官網:https://www.tensorflow.org/

優點:

  • 使用簡單易學的語言,如 Python。

  • 使用計算圖進行抽象。

  • 可以使用 TensorBoard 獲得視覺化。

缺點:

  • 執行速度慢,因為 Python 不是最快的語言。

  • 缺乏許多預訓練的模型。

  • 不完全開源。


Microsoft CNTK:“開源的深度學習工具包”

語言:C++

13 516 ★

我們是否可以將它看作是微軟對谷歌 TensorFlow 的回應?

微軟的 CNTK(計算網路工具包)是一個用來增強模組化和保持計算網路分離的庫,提供學習演演算法和模型描述。

在需要大量伺服器進行計算的情況下,CNTK 可以同時利用多臺伺服器。

據說 CNTK 在功能上接近谷歌的 TensorFlow,但速度比對方要快一些。

官網:https://github.com/Microsoft/CNTK

優點:

  • 高度靈活。

  • 允許分散式訓練。

  • 支援 C++、C#、Java 和 Python。

缺點:

  • 它由一種新的語言——NDL(網路描述語言)實現。

  • 缺乏視覺化。


Theano:“數值計算庫”

語言:Python

7 550 ★

作為 TensorFlow 的強有力競爭對手,Theano 是一個強大的 Python 庫,它允許使用高效多維陣列進行數值計算。

它不使用 CPU,而是透明地使用 GPU,用於資料密集型計算,所以效率很高。

因此,在大約 10 年內,Theano 一直被用於大規模的資料密集型計算。

然而,在 2017 年 9 月 28 日當日,開發團隊宣稱,將在 2017 年 11 月 15 日釋出 1.0 版後,停止對它的主要開發。

但這並沒有削弱它的強大實力,你仍可以使用它,隨時進行深入學習的研究。

官網:https://github.com/Theano/Theano

優點:

  • 對 CPU 和 GPU 進行了適當最佳化。

  • 高效的數值計算任務。

缺點:

  • 與其他庫相比,原始的 Theano 有點兒低階。

  • 需要與其他庫一起使用,以獲得較高階的抽象。

  • 在 AWS 上使用有點小 Bug。


Caffe:“應對深入學習的快速開放架構”

語言:C++

22 111 ★

Caffe 是一個強大的深度學習框架。

和這個串列中的其他框架一樣,它對於深入學習的研究而言,是非常快速和有效的。

使用 Caffe,你可以輕易地構建一個用於影象分類的 CNN(摺積神經網路)。它在 GPU 上執行良好,使得執行速度非常快。

官網:http://caffe.berkeleyvision.org/

上圖是 Caffe 的主類。

優點:

  • 可以與 Python 和 MATLAB 系結使用。

  • 高效能。

  • 無需編寫程式碼,即可訓練模型。

缺點:

  • 對遞迴網路支援不好。

  • 對新架構來說不是很好。


Keras:“針對人類的深度學習”

語言:Python

23 711 ★

Keras 是一個用 Python 編寫的開源神經網路庫。

不似 TensorFlow、CNTK、Theano、Keras 這種端到端(End-to-End)的機器學習框架,

相反,它是一個介面,提供了高層次的抽象,使得神經網路的配置變得更加簡單,而不必考慮所在的框架。

谷歌的 TensorFlow 目前支援 Keras 作為後端,而微軟的 CNTK 也將在短時間內獲得支援。

官網:https://keras.io/

優點:

  • 它對使用者友好,易於上手。

  • 高度拓展。

  • 可以在 CPU 或 GPU 上無縫執行。

  • 完美相容 Theano 和 TensorFlow。

缺點:

  • 不能有效地作為一個獨立的框架來使用。


Torch:“開源機器學習庫”

語言:C

7 584 ★

Torch 是一個用於科學計算和數值計算的開源機器學習庫。

它是一個基於  Lua 程式語言(終於不再是 Python)的庫。

透過提供大量演演算法,使得深入學習的研究更加容易,並提高了效率和速度。它有一個強大的 N 維陣列,幫助進行類似切片和索引這樣的計算,並提供線性代數程式和神經網路模型。官網:http://torch.ch/

優點:

  • 高度靈活。

  • 速度快,效率高。

  • 大量的預訓練模型可用。

缺點:

  • 說明檔案不夠清晰。

  • 缺乏立即使用的即插即用程式碼。

  • 它基於一個不怎麼流行的程式語言 Lua。


Accord.NET:針對 .NET 的機器學習、計算機視覺、統計學和通用科學計算

語言:C#

2 424 ★

這是為 C# 程式員準備的。

Accord.NET 框架是一個 .NET 機器學習框架,使得音訊和影象的處理變得更加簡單。

該框架可以有效地解決數值最佳化、人工神經網路,甚至給出了視覺化的特徵。此外,Accord.NET 對計算機視覺和訊號處理具有強大的功能,並且易於演演算法實現。

官網:http://accord-framework.net/

優點:

  • 它擁有一個龐大且活躍的開發團隊。

  • 說明檔案非常不錯。

  • 高質量的視覺化。

缺點:

  • 這不是一個非常流行的框架。

  • 與 TensorFlow 相比,速度慢


Spark MLlib:可擴充套件的機器學習庫

語言:Scala

15 708 ★

Apache 的 Spark MLlib 是一個具有高度拓展性的機器學習庫。

它在 Java、Scala、Python 甚至 R 語言中都非常有用,因為它使用 Python 和 R 中類似 Numpy 這樣的庫,能夠進行高效的互動。

MLlib 可以很容易地插入 Hadoop 工作流程中。它提供了機器學習演演算法,如分類、回歸、聚類等。

這個強大的庫在處理大規模的資料時,速度非常快。

官網:https://spark.apache.org/mllib/

優點:

  • 對於大規模資料處理來說,非常快。

  • 可用於多種語言。

缺點:

  • 陡峭的學習曲線。

  • 僅 Hadoop 支援即插即用。


Sci-Kit Learn:“Python 中的機器學習”

語言:Python

24 369 ★

Sci-kit learn 是一個針對機器學習的強大 Python 庫,主要用於構建模型。

使用諸如 Numpy、SciPy 和 Matplotlib 等其他庫構建,對於統計建模技術(如分類、回歸、叢集等)非常有效。

Sci-Kit learn的特性包括監督式學習演演算法、非監督式學習演演算法和交叉驗證。

官網:http://scikit-learn.org/

優點:

  • 可以使用許多 shell 演演算法。

  • 高效的資料挖掘。

缺點:

  • 不是最好的模型構建庫。

  • GPU 使用不高效。

MLPack:“可擴充套件的 C++ 機器學習庫”

語言:C++

1 856 ★

MLPack 是一個使用 C++ 實現的可擴充套件的機器學習庫。在 C++ 中,你可以猜到,它的記憶體管理非常出色。

擁有高質量的機器學習演演算法與庫,MLPack 的執行速度非常快。它對新手十分友好,因為它提供了一個可供使用的簡單 API。

官網:http://mlpack.org/

優點:

  • 高度拓展。

  • 可以與 Python 和 C++ 系結。

缺點:

  • 說明檔案不夠清晰。


總結

本文所討論的庫都非常高效,並經過了時間的考驗,質量上乘。五大巨頭 Facebook、谷歌、雅虎、蘋果、微軟都在使用這些庫進行深度學習和機器學習專案。

你有什麼理由不用哪?

你能想到其他經常使用,但不在串列上的庫嗎?請在評論部分與我們分享。

【關於投稿】


如果大家有原創好文投稿,請直接給公號傳送留言。


① 留言格式:
【投稿】+《 文章標題》+ 文章連結

② 示例:
【投稿】
《不要自稱是程式員,我十多年的 IT 職場總結》:http://blog.jobbole.com/94148/


③ 最後請附上您的個人簡介哈~



覺得本文有幫助?請分享給更多人

關註「演演算法愛好者」,修煉程式設計內功

贊(0)

分享創造快樂