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