云棲君導(dǎo)讀:不知道自己應(yīng)該選用哪個AI框架和庫?看看本文就行了,本文為AI開發(fā)的工程師們梳理了現(xiàn)在最流行的框架,并簡單的分析了它們的優(yōu)缺點。
人工智能已經(jīng)存在很長時間,然而,由于這一領(lǐng)域的巨大發(fā)展,近年來它已成為一個流行語。人工智能曾經(jīng)被稱為一個書呆子和天才領(lǐng)域,但由于各種庫和框架的發(fā)展,它已成為一個友好的IT領(lǐng)域,更多的人開始了他們的人工智能之旅。
在這篇文章中,我們將研究人工智能的高質(zhì)量庫的優(yōu)點和缺點,以及它們的一些特點。
一、TensorFlow
“使用數(shù)據(jù)流圖計算進行機器學(xué)習(xí)”。
語言:C ++或Python。
當你進入AI時,你會聽到的第一個框架之一就是Google的TensorFlow。TensorFlow是一個使用數(shù)據(jù)流圖進行數(shù)值計算的開源框架。這個框架被稱為具有允許在任何CPU或GPU上進行計算的架構(gòu),無論是臺式機,服務(wù)器還是移動設(shè)備,另外這個框架在Python編程語言中是可用的,這也是Python大火的原因。
TensorFlow是通過稱為節(jié)點的數(shù)據(jù)層進行排序,并根據(jù)獲得的信息做出決定。
優(yōu)點:
使用易于學(xué)習(xí)的語言(Python)。
使用計算圖抽象。
可以使用可視化的TensorBoard。
缺點:
它很慢,因為Python不是編程語言中最快的。
缺乏許多預(yù)先訓(xùn)練的模型。
不完全開源。
二、CNTK
“開源深度學(xué)習(xí)工具包”。
語言:C ++。
我們可以稱之為它是微軟對Google的TensorFlow的回應(yīng)。
微軟的CNTK是一個增強分離計算網(wǎng)絡(luò)模塊化和維護的庫,它提供了學(xué)習(xí)算法和模型描述。在需要大量服務(wù)器進行操作的情況下,CNTK可以同時利用多臺服務(wù)器。
據(jù)說它的功能與Google的TensorFlow相近,但是,它更快。
優(yōu)點:
非常靈活。
允許分布式培訓(xùn)。
支持C ++,C#,Java和Python。
缺點:
它以一種新的語言——Network Description Language(NDL)來實現(xiàn)。
缺乏可視化。
三、Theano
“數(shù)值計算庫”。
語言:Python。
Theano是TensorFlow的強有力競爭者,它是一個功能強大的Python庫,允許以高效率的方式進行多維數(shù)組的數(shù)值操作。
該庫透明地使用GPU來執(zhí)行數(shù)據(jù)密集型計算而不是CPU,因此操作效率很高。出于這個原因,Theano已經(jīng)被用于為大規(guī)模的計算密集型操作長達十年的時間。然而,于二零一七年九月, Theano的1.0版本停止。
但這并不意味著它不再是一個強大的圖書館,你仍然可以隨時進行深入的學(xué)習(xí)研究
優(yōu)點:
優(yōu)化CPU和GPU。
有效的計算任務(wù)。
缺點:
與其他庫相比,原生Theano有點低級。
需要與其他庫一起使用以獲得高度的抽象。
AWS使用它上有點bug。
四、Caffe
“快速,開放的深度學(xué)習(xí)框架”。
語言:C ++。
Caffe是一個強大的深度學(xué)習(xí)框架,像這個清單上的其他框架一樣,深度學(xué)習(xí)的研究速度非???。
借助Caffe,你可以非常輕松地構(gòu)建用于圖像分類的卷積神經(jīng)網(wǎng)絡(luò)(CNN)。Caffe在GPU上運行的也很不錯,這有助于在運行期間提高速度。
Caffe主類:
優(yōu)點:
Python和MATLAB都可用。
表現(xiàn)的很好。
無需編寫代碼即可進行模型的訓(xùn)練。
缺點:
對于RNN網(wǎng)絡(luò)不太友好。
對于新體系結(jié)構(gòu)不太友好。
五、Keras
“為人類普及深度學(xué)習(xí)”。
語言:Python。
Keras是一個用Python編寫的開源的神經(jīng)網(wǎng)絡(luò)庫。與TensorFlow,CNTK和Theano不同,Keras并不意味著是一個端到端的機器學(xué)習(xí)框架。
相反,它作為一個接口,提供了一個高層次的抽象,這使得神經(jīng)網(wǎng)絡(luò)的配置變得簡單,無論它坐在哪個框架上。
谷歌的TensorFlow目前支持Keras作為后端,而微軟的CNTK也會在很短的時間內(nèi)做到這一點。
優(yōu)點:
它對用戶非常友好。
它很容易擴展。
在CPU和GPU上無縫運行。
與Theano和TensorFlow無縫工作。
缺點:
不能有效地用作獨立的框架。
六、Torch
“一個開源的機器學(xué)習(xí)庫”。
語言:C。
Torch是一個用于科學(xué)和數(shù)字操作的開源機器學(xué)習(xí)庫。
這是一個基于Lua編程語言的庫而不是Python。
它通過提供大量的算法,使得深度學(xué)習(xí)研究更容易,并且提高了效率和速度。它有一個強大的N維數(shù)組,這有助于切片和索引等操作。它還提供了線性代數(shù)程序和神經(jīng)網(wǎng)絡(luò)模型。
優(yōu)點:
非常靈活。
高水平的速度和效率。
大量的預(yù)訓(xùn)練模型可用。
缺點:
缺乏即時使用的代碼。
它基于一種不那么流行的語言,Lua。
七、Accord.NET
“機器學(xué)習(xí),計算機視覺,統(tǒng)計和.NET通用科學(xué)計算”。
語言:C#。
這里是一個為C#程序員存在的機器學(xué)習(xí)框架。
Accord.NET框架是一個.NET機器學(xué)習(xí)框架,使音頻和圖像處理變得簡單。
這個框架可以有效地處理數(shù)值優(yōu)化,人工神經(jīng)網(wǎng)絡(luò),甚至可視化。除此之外,Accord.NET對計算機視覺和信號處理功能非常強大,同時也使得算法的實現(xiàn)變得簡單。
優(yōu)點:
它有一個龐大而積極的開發(fā)團隊。
有據(jù)可查的框架。
有質(zhì)量可視化。
缺點:
不是一個非常流行的框架。
比TensorFlow慢。
八、Spark MLlib
“可擴展的機器學(xué)習(xí)庫”。
語言:Scala。
Apache的Spark MLlib是一個非??蓴U展的機器學(xué)習(xí)庫。它非常適用于Java,Scala,Python甚至R等語言。它非常高效,因為它可以與Python庫和R庫中的numpy進行互操作。
MLlib可以輕松插入到Hadoop工作流程中。它還提供了機器學(xué)習(xí)算法,如分類,回歸和聚類。這個強大的庫在處理大型數(shù)據(jù)時非??焖佟?/p>
優(yōu)點:
對于大規(guī)模數(shù)據(jù)非??焖?。
提供支持多種語言。
缺點:
不是很完美的學(xué)習(xí)曲線。
即插即用僅適用于Hadoop。
九、Sci-kit學(xué)習(xí)
“用Python進行機器學(xué)習(xí)”。
語言:Python。
Sci-kit learn是一個非常強大的機器學(xué)習(xí)Python庫,主要用于構(gòu)建模型。
使用numpy,SciPy和matplotlib等其他庫構(gòu)建,對統(tǒng)計建模技術(shù)(如分類,回歸和聚類)非常有效。
Sci-kit學(xué)習(xí)帶有監(jiān)督學(xué)習(xí)算法,無監(jiān)督學(xué)習(xí)算法和交叉驗證等功能。點擊查看官網(wǎng)。
優(yōu)點:
許多主要算法的可用性很高。
能夠進行有效的數(shù)據(jù)挖掘。
缺點:
不是創(chuàng)建模型的最佳選擇。
GPU效率不高。
十、MLPack
“可擴展的C ++機器學(xué)習(xí)庫”。
語言:C ++。
MLPack是一個用C ++實現(xiàn)的可擴展的機器學(xué)習(xí)庫,因為它是用C ++編寫的,所以你可以猜測到它對于內(nèi)存管理的非常好。
MLPack以極高的速度運行,可以支持高質(zhì)量的機器學(xué)習(xí)算法與庫一起運行。這個庫對新手是友好的,它還提供了一個簡單的API幫助新手使用。
優(yōu)點:
非常容易擴展。
Python和C ++都可用。
缺點:
沒有具體的參考資料。
本文由阿里云云棲社區(qū)組織翻譯。
文章原標題《progressive-tools10-best-frameworks-and-libraries》
作者 :Anton Shaleynikov
譯者:虎說八道
精彩活動
聯(lián)系客服