當前位置:
首頁 > 知識 > 10 個用於 AI 開發的框架和庫

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、谷歌、雅虎、蘋果、微軟都在使用這些庫進行深度學習和機器學習項目。


你有什麼理由不用哪?


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




看完本文有收穫?請轉

發分享給更多人


關注「P

ython開發者」,提升Python技能


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python開發者 的精彩文章:

用 Python 和 OpenCV 檢測圖片上的條形碼

TAG:Python開發者 |