最適合人工智能的十大框架和庫,谷歌、微軟和蘋果都在用!
在很長一段時間內(nèi),人工智能都被認為是陽春白雪的科技技術(shù),只有搞學(xué)術(shù)的和天才才會研究,但是近年來,隨著各種框架和庫的發(fā)展,人工智能領(lǐng)域開始變得友好,更多的技術(shù)人才開始進入到這個領(lǐng)域。
本文將著重為大家介紹10個人工智能領(lǐng)域高質(zhì)量的框架和庫,分析它們的特點,對比它們的優(yōu)缺點,幫助更多技術(shù)人加入人工智能的圈子中。
1. TensorFlow
“使用數(shù)據(jù)流圖進行可伸縮機器學(xué)習(xí)的計算。”
語言:C ++或Python。
一腳踏入人工智能領(lǐng)域時,你聽到的第一個框架可能就是Google的TensorFlow。
TensorFlow是一個使用數(shù)據(jù)流圖進行數(shù)值計算的開源軟件。據(jù)悉,這個框架允許在任何CPU或GPU上進行計算,無論是臺式機、服務(wù)器還是移動設(shè)備都支持。
TensorFlow通過稱為節(jié)點的數(shù)據(jù)層進行排序,并根據(jù)所得到的信息進行決策。
優(yōu)點:
使用易于學(xué)習(xí)的語言(Python)。
使用計算圖抽象。
可使用TensorBoard可視化。
缺點:
由于Python不是最快的編程語言,所以它速度會很慢;
預(yù)先訓(xùn)練的模型十分缺乏。
不是完全開源。
2.微軟的CNTK
“開源的深度學(xué)習(xí)工具包”
語言:C ++。
CNTK,我們可以稱之為是微軟對Google TensorFlow的回應(yīng)。
微軟的Computational Network ToolKit是一個提高模塊化和維護分離計算網(wǎng)絡(luò),提供學(xué)習(xí)算法和模型描述的庫。
CNTK還可以同時利用多臺服務(wù)器,據(jù)說它的功能與Google TensorFlow相近,但是速度卻要更快。
優(yōu)點:
非常靈活;
允許分布式訓(xùn)練;
支持C ++、C#、Java和Python。
缺點:
它是用一種新的語言——Network Description Language (NDL)來實現(xiàn)的;
缺乏可視化;
3. Theano
“數(shù)值計算庫”
語言:Python。
作為TensorFlow的強大競爭對手,Theano是一個強大的Python庫,允許使用高效率的多維數(shù)組進行數(shù)值操作。
該庫使用GPU來執(zhí)行數(shù)據(jù)密集型計算,因此操作效率很高。也同樣是因為這個原因,在10年的時間里,Theano都被用于為大規(guī)模的計算密集型操作提供動力。
2017年9月,Theano的開發(fā)與維護者之一 Pascal Lamblin 貼出了一封郵件:Yoshua Bengio 宣布在發(fā)布Theano 1.0版本之后,終止Theano的開發(fā)和維護。當(dāng)然,這并不意味著Theano是個不強大的庫。
優(yōu)點:
正確優(yōu)化CPU和GPU。
高效的數(shù)值計算任務(wù)。
缺點:
與其他庫相比,原始的Theano有點低級。
需要與其他庫一起使用以獲得較高的抽象級別。
在AWS上有點小麻煩。
4.Caffe
“快速,開放的深度學(xué)習(xí)框架”
語言:C ++。
Caffe是一個強大的深度學(xué)習(xí)框架。與文中的其它框架一樣,深度學(xué)習(xí)的速度非??臁?/p>
借助Caffe,可以非常輕松地構(gòu)建用于圖像分類的卷積神經(jīng)網(wǎng)絡(luò)(CNN)。另外Caffe在GPU上也可以良好運行,這有助于在運行期間提高速度。
Caffe main classes:
優(yōu)點:
Python和MATLAB的綁定可用;
性能表現(xiàn)優(yōu)異;
無需編寫代碼即可進行模型的訓(xùn)練。
缺點:
對于遞歸網(wǎng)絡(luò)支持不好;
對于新架構(gòu)的支持不太友好;
5.Keras
對人類的深度學(xué)習(xí)
語言:Python。
Keras是一個用Python編寫的開源的神經(jīng)網(wǎng)絡(luò)庫。
與TensorFlow,CNTK和Theano不同,Keras并不是一個端到端的機器學(xué)習(xí)框架。相反,它是作為一個接口,提供高層次的抽象,讓神經(jīng)網(wǎng)絡(luò)的配置變得簡單。目前Google TensorFlow已經(jīng)支持Keras作為后端,不久之后,微軟 CNTK也會支持。
優(yōu)點:
用戶友好;
易于擴展;
在CPU和GPU上無縫運行;
與Theano和TensorFlow無縫合作。
缺點:
不能作為獨立框架有效使用。
6.Torch
“一個開源的機器學(xué)習(xí)庫”
語言:C.
Torch是一個用于科學(xué)和數(shù)值的開源機器學(xué)習(xí)庫。它是基于Lua的庫,通過提供大量的算法,更易于深入學(xué)習(xí)研究,提高了效率和速度。它有一個強大的n維數(shù)組,有助于切片和索引之類的操作。除此之外,還提供了線性代數(shù)程序和神經(jīng)網(wǎng)絡(luò)模型。
優(yōu)點:
非常靈活。
速度快,效率高。
大量的預(yù)先訓(xùn)練的模型可用。
缺點:
文檔不清晰;
沒有立即使用的即插即用代碼。
基于一種不那么流行的語言Lua。
7. Accord.NET
“機器學(xué)習(xí),計算機視覺,統(tǒng)計和.NET通用科學(xué)計算”。
語言:C#。
這是為C#程序員準備的。
Accord.NET框架是一個.NET機器學(xué)習(xí)框架,使得音頻和圖像處理變得簡單。
這個框架可以有效地處理數(shù)值優(yōu)化、人工神經(jīng)網(wǎng)絡(luò),甚至是可視化。除此之外,Accord.NET對計算機視覺和信號處理功能非常強大,同時也使得算法的實現(xiàn)變得簡單。
優(yōu)點:
它擁有一個龐大而活躍的開發(fā)團隊;
非常有據(jù)可查的框架;
可視化質(zhì)量高。
缺點:
不是一個非常流行的框架;
速度比TensorFlow慢。
8. Spark MLlib
“可擴展的機器學(xué)習(xí)庫”
語言:Scala
Apache Spark MLlib是一個可擴展的機器學(xué)習(xí)庫,適用于Java、Scala、Python、R語言等多種語言。因為可以與Python庫和R庫中的numpy進行互操作,所以非常高效。
MLlib可以輕松插入到Hadoop工作流程中,提供了機器學(xué)習(xí)算法,如分類,回歸和聚類。
這個強大的庫在處理大型數(shù)據(jù)時非??焖?。
優(yōu)點:
對于大規(guī)模數(shù)據(jù)處理非??焖?。
支持多種語言。
缺點:
陡峭的學(xué)習(xí)曲線。
即插即用僅適用于Hadoop。
9. Sci-kit Learn
“Python中的機器學(xué)習(xí)”
語言:Python。
Sci-kit Learn是一個非常強大的機器學(xué)習(xí)Python庫,主要用于構(gòu)建模型。
它使用其他庫(如numpy、SciPy和matplotlib)構(gòu)建,對于統(tǒng)計建模技術(shù)(如分類、回歸和集群)非常有效。Sci-kit Learn的特性包括監(jiān)督學(xué)習(xí)算法、無監(jiān)督學(xué)習(xí)算法和交叉驗證
優(yōu)點:
許多主要算法的可用性。
高效的數(shù)據(jù)挖掘。
缺點:
不是最好的構(gòu)建模型。
GPU效率不高。
10. MLPack
“可擴展的C ++機器學(xué)習(xí)庫”
語言:C ++。
MLPack是一個用C ++實現(xiàn)的可擴展的機器學(xué)習(xí)庫。因為它是用C ++編寫的,所以我們可以合理猜測它對內(nèi)存管理是非常好的。
MLPack以極快的速度運行,因為高質(zhì)量的機器學(xué)習(xí)算法與庫一起運行,而且它對于新手是非常友好的,并且提供了一個簡單的API使用。
優(yōu)點:
可擴展;
Python和C ++綁定可用。
缺點:
文檔不是很友好。
寫在最后
本文推薦的庫都是經(jīng)得起時間檢驗的,像是Facebook、Google、Apple和Microsoft等一些大公司都在他們的深度學(xué)習(xí)和機器學(xué)習(xí)項目中應(yīng)用這些庫,所以你還有什么道理不抓緊時間來學(xué)習(xí)呢?
如果你有經(jīng)常使用并且感覺還不錯的庫,也歡迎在下方評論中與我們分享!
