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