審視十大熱門的AI框架與資源庫 分析優(yōu)點(diǎn)與劣勢
譯文【51CTO.com快譯】人工智能絕非新鮮事物,而早已存在于科學(xué)領(lǐng)域之內(nèi)。然而隨著這一領(lǐng)域近年來的迅猛發(fā)展,目前人工智能已經(jīng)在全球范圍內(nèi)掀起熱潮。以往的人工智能領(lǐng)域被稱為書***與天才的集散地,但如今隨著各類資源庫及框架的發(fā)展,其正逐步成為一類更為友好的IT范疇,并吸引更多普通人士加入其中。
在今天的文章中,我們將審視那些用于人工智能開發(fā)的高質(zhì)量資源庫,分析其優(yōu)點(diǎn)與劣勢,同時(shí)就部分特性展開討論。下面,馬上開始探索這片人工智能資源庫的世界!
1. TensorFlow
“利用數(shù)據(jù)量圖計(jì)算實(shí)現(xiàn)可擴(kuò)展機(jī)器學(xué)習(xí)。”
語言: C++或Python。 在初涉AI領(lǐng)域時(shí),大家聽說的首款框架幾乎必然是谷歌公司的TensorFlow。 TensorFlow是一款開源軟件,利用數(shù)據(jù)流圖進(jìn)行數(shù)值計(jì)算。這套框架據(jù)稱擁有一套可運(yùn)行在任何CPU或GPU之上的計(jì)算架構(gòu)——包括臺式機(jī)、服務(wù)器或者移動(dòng)設(shè)備。另外,這套框架亦可在Python編程語言當(dāng)中使用。 TensorFlow對被稱為節(jié)點(diǎn)的數(shù)據(jù)層進(jìn)行排序,并根據(jù)所獲得的任意信息作出決策。
優(yōu)點(diǎn):
- 使用易于學(xué)習(xí)的語言(Python)。
- 使用計(jì)算圖抽象機(jī)制。
- 可配合TensorBoard實(shí)現(xiàn)可視化。
劣勢:
- 速度較慢,這主要是受到Python語言的影響。
- 缺少充足的預(yù)訓(xùn)練模型。
- 并非完全開源。
2. 微軟 CNTK
“一套開源深度學(xué)習(xí)工具集。”
語言: C++. 我們可以將CNTK稱為微軟的TensorFlow。 微軟的這套計(jì)算網(wǎng)絡(luò)工具集是一套能夠強(qiáng)化各獨(dú)立計(jì)算網(wǎng)絡(luò)的模塊化與維護(hù)能力的資源庫,同時(shí)提供學(xué)習(xí)算法與模型描述。 與此同時(shí),CNTK還能夠發(fā)揮多服務(wù)器優(yōu)勢,從而更好地利用大量資源處理任務(wù)。
據(jù)稱其功能與谷歌的TensorFlow非常相似,只是其速度要更快一些。
優(yōu)點(diǎn):
- ***靈活性。
- 允許進(jìn)行分布式訓(xùn)練。
- 支持C++、C#、Java以及Python。
劣勢:
- 其采用一種新型語言實(shí)現(xiàn),即網(wǎng)絡(luò)描述語言(簡稱NDL)。
- 缺少可視化能力。
3. Theano
“一款數(shù)值計(jì)算庫”。
語言: Python。
Theano堪稱TensorFlow的一位強(qiáng)有力競爭對手,這是一套功能強(qiáng)大的Python庫,允許以高效方式進(jìn)行與多維數(shù)組相關(guān)的數(shù)值運(yùn)算。 這套庫以透明化方式利用GPU(而非CPU)執(zhí)行數(shù)據(jù)密集型計(jì)算,因此運(yùn)算效率很高。正因?yàn)槿绱耍琓heano早在約十年之前就已經(jīng)被引入至大規(guī)模計(jì)算密集型任務(wù)當(dāng)中。 然而,2017年9月開發(fā)團(tuán)隊(duì)宣布Theano的主要開發(fā)工作將于2017年11月1.0版本發(fā)布后正式停止。
當(dāng)然,這一切都不足以影響Theano本身那強(qiáng)大的表現(xiàn)。您仍可隨時(shí)利用其開展自己的深度學(xué)習(xí)研究工作。
優(yōu)點(diǎn):
- 針對CPU與GPU進(jìn)行了適當(dāng)優(yōu)化。
- 在數(shù)值運(yùn)算任務(wù)方面效率可觀。
劣勢:
- 與其它資源庫相比,Theano顯得較為原始且底層。
- 需要利用其它庫才能獲得高級抽象能力。
- 在AWS上運(yùn)行時(shí)存在一點(diǎn)bug。
4. Caffe
“快速且開放的深度學(xué)習(xí)框架。” 語言: C++。 Caffe是一款強(qiáng)大的深度學(xué)習(xí)框架。 與本份清單上列出的其它框架選項(xiàng)一樣,Caffe同樣擁有極為出色的深度學(xué)習(xí)研究速度與效率。 利用Caffe,您能夠非常輕松地構(gòu)建起卷積神經(jīng)網(wǎng)絡(luò)(簡稱CNN)以實(shí)現(xiàn)圖像分類。Caffe能夠在GPU上運(yùn)行良好,從而顯著提升運(yùn)行期間的速度表現(xiàn)。
Caffe主類:
優(yōu)點(diǎn):
- 提供Python與MATLAB綁定。
- 強(qiáng)大的性能表現(xiàn)。
- 可在無需編寫代碼的前提下進(jìn)行模型訓(xùn)練。
劣勢:
- 遞歸網(wǎng)絡(luò)較差。
- 對新架構(gòu)支持效果一般。
5. Keras
“適合人類的深度學(xué)習(xí)方案。” 語言: Python。 Keras是一套由Python編寫而成的開源神經(jīng)網(wǎng)絡(luò)庫。 與TensorFLow、CNTK乃至Theano不同,Keras并不屬于端到端機(jī)器學(xué)習(xí)框架。 相反,其作為一個(gè)接口面向各類其它框架提供高層級抽象,從而使得神經(jīng)網(wǎng)絡(luò)的配置變得更為簡單。
谷歌公司的TensorFlow目前支持將Keras作為后端,而微軟的CNTK亦將很快提供同樣的支持選項(xiàng)。
優(yōu)點(diǎn):
- 具備用戶友好特性。
- 易于擴(kuò)展。
- 可同時(shí)在CPU與GPU上無縫運(yùn)行。
- 能夠以無縫方式同Theano及TensorFlow協(xié)作。
劣勢: 無法作為獨(dú)立框架加以使用。
6. Torch
“一套開源機(jī)器學(xué)習(xí)庫。” 語言: C。 Torch是一套用于科學(xué)及數(shù)值運(yùn)算的開源機(jī)器學(xué)習(xí)庫。 這是一套基于——不是Python了哦——Lua編程語言的庫。 通過提供數(shù)量龐大的算法選項(xiàng),其顯著簡化了深度學(xué)習(xí)研究的門檻并提升了效率與速度。Torch擁有一個(gè)強(qiáng)大的N維數(shù)組,可幫助用戶輕松完成分片及索引等操作。其還提供多種線性代數(shù)例程與神經(jīng)網(wǎng)絡(luò)模型。
優(yōu)點(diǎn):
- ***靈活性。
- 可觀的速度及效率。
- 提供大量預(yù)訓(xùn)練模型。
劣勢:
- 說明文檔不夠清晰。
- 缺少可立即使用的即插即用代碼。
- 基于Lua這種不太流行的語言。
7. Accord.NET
“面向.NET的機(jī)器學(xué)習(xí)、計(jì)算機(jī)視覺、統(tǒng)計(jì)以及通用科學(xué)計(jì)算。” 語言: C#。 這是一份專門獻(xiàn)給C#程序員的厚禮。 Accord.NET框架是一套.NET機(jī)器學(xué)習(xí)框架,可輕松完成音頻與圖像的處理。
這套框架能夠高效處理數(shù)值優(yōu)化、人工神經(jīng)網(wǎng)絡(luò)甚至是可視化任務(wù)。除此之外,Accord.NET還擅長計(jì)算機(jī)視覺與信號處理,亦可輕松實(shí)現(xiàn)各類算法。
優(yōu)點(diǎn):
- 擁有龐大而活躍的開發(fā)團(tuán)隊(duì)。
- 說明文檔質(zhì)量極高。
- 高質(zhì)量可視化能力。
劣勢:
- 并不算非常流行。
- 相較于TensorFlow速度更慢。
8. Spark MLlib “一套可擴(kuò)展的機(jī)器學(xué)習(xí)庫。” 語言: Scala。 Apache的Spark MLlib是一套***可擴(kuò)展性的機(jī)器學(xué)習(xí)庫。 其適用于Java、Scala、Python甚至是R等語言,且效率極高,能夠與Python庫及R庫中的numpy進(jìn)行互操作。 MLlib能夠輕松被插入至Hadoop工作流當(dāng)中。其提供多種機(jī)器學(xué)習(xí)算法,具體包括分類、回歸與聚類等等。
這套強(qiáng)大的庫在處理超大規(guī)模數(shù)據(jù)時(shí)速度極快。
優(yōu)點(diǎn):
- 在處理超大規(guī)模數(shù)據(jù)時(shí)速度極快。
- 適用于多種語言。
劣勢:
- 擁有陡峭的學(xué)習(xí)曲線。
- 僅可面向Hadoop實(shí)現(xiàn)即插即用。
9. Sci-kit Learn
“Python中的機(jī)器學(xué)習(xí)實(shí)現(xiàn)方案。” 語言: Python。 Sci-kit learn是一套強(qiáng)大的Python庫,主要用于機(jī)器學(xué)習(xí)當(dāng)中的模型構(gòu)建類場景。 由于利用numpy、SciPy以及matplotlib等其它庫構(gòu)建而成,因此其能夠以極高效率處理各類統(tǒng)計(jì)建模技術(shù),具體包括分類、回歸以及聚類等。 Sci-kit learn擁有監(jiān)督學(xué)習(xí)算法、無監(jiān)督學(xué)習(xí)算法以及交叉驗(yàn)證等功能。
優(yōu)點(diǎn):
- 可支持多種主要算法。
- 在數(shù)據(jù)挖掘方面效率很高。
劣勢:
- 并非模型構(gòu)建的***選項(xiàng)。
- GPU資源利用效率不高。
10. MLPack
“一套可擴(kuò)展的C++機(jī)器學(xué)習(xí)庫。” 語言: C++。 MLPack是一套以C++語言實(shí)現(xiàn)的可擴(kuò)展機(jī)器學(xué)習(xí)庫。由于其以C++編寫而成,因此大家可以想見其在內(nèi)存管理方面頗有心得。 MLPack擁有出色的運(yùn)行速度,這是由于該庫提供多種質(zhì)量驚人的機(jī)器學(xué)習(xí)算法。這套庫對新手非常友好,且提供簡單的API供用戶使用。
優(yōu)點(diǎn):
- ***可擴(kuò)展性。
- 提供Python 與C++ 綁定。
劣勢:
- 說明文檔質(zhì)量一般。
總結(jié)陳詞
本文中討論的各種庫選項(xiàng)皆非常高效,且已經(jīng)被時(shí)間證明擁有出色的質(zhì)量。既然Facebook、谷歌、雅虎、蘋果以及微軟等巨頭級企業(yè)都在利用這些庫支持自己的深度學(xué)習(xí)與機(jī)器學(xué)習(xí)項(xiàng)目,您當(dāng)然也沒有理由拒絕,不是嗎?
當(dāng)然,相信大家也有著一些自己經(jīng)常使用、但卻未被列入本次榜單的庫選項(xiàng)——請?jiān)谠u論中分享您的心得!
原文鏈接: https://dzone.com/articles/progressive-tools10-best-frameworks-and-libraries
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】