【嵌牛導(dǎo)讀】:由于最近在看語音識別的相關(guān)內(nèi)容,看到幾個很不錯的人工智能深度學(xué)習(xí)的開源庫,分享給大家疮丛,我相信只有選擇好合適的工具,才能在開發(fā)的過程中事半功倍辆它。
【嵌牛鼻子】:人工智能誊薄,開源框架,深度學(xué)習(xí)
一.TensorFlow
TensorFlow是一款開源的數(shù)學(xué)計算軟件锰茉,使用數(shù)據(jù)流圖(Data Flow Graph)的形式進行計算呢蔫。圖中的節(jié)點代表數(shù)學(xué)運算,而圖中的線條表示多維數(shù)據(jù)數(shù)組(tensor)之間的交互飒筑。TensorFlow靈活的架構(gòu)可以部署在一個或多個CPU片吊、GPU的臺式以及服務(wù)器中,或者使用單一的API應(yīng)用在移動設(shè)備中协屡。TensorFlow最初是由研究人員和Google Brain團隊針對機器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)進行研究所開發(fā)的俏脊,目前開源之后可以在幾乎各種領(lǐng)域適用。
TensorFlow的特點:
機動性: TensorFlow并不只是一個規(guī)則的neural network庫肤晓,事實上如果你可以將你的計算表示成data flow graph的形式爷贫,就可以使用TensorFlow认然。用戶構(gòu)建graph,寫內(nèi)層循環(huán)代碼驅(qū)動計算漫萄,TensorFlow可以幫助裝配子圖卷员。定義新的操作只需要寫一個Python函數(shù),如果缺少底層的數(shù)據(jù)操作腾务,需要寫一些C++代碼定義操作毕骡。
可適性強: 可以應(yīng)用在不同設(shè)備上,cpus岩瘦,gpu未巫,移動設(shè)備,云平臺等
自動差分: TensorFlow的自動差分能力對很多基于Graph的機器學(xué)習(xí)算法有益
多種編程語言可選: TensorFlow很容易使用启昧,有python接口和C++接口橱赠。其他語言可以使用SWIG工具使用接口。(SWIG—Simplified Wrapper and Interface Generator箫津, 是一個非常優(yōu)秀的開源工具,支持將 C/C++ 代碼與任何主流腳本語言相集成宰啦。)
最優(yōu)化表現(xiàn): ?充分利用硬件資源苏遥,TensorFlow可以將graph的不同計算單元分配到不同設(shè)備執(zhí)行,使用TensorFlow處理副本赡模。
二.Torch
Torch是一個有大量機器學(xué)習(xí)算法支持的科學(xué)計算框架田炭,其誕生已經(jīng)有十年之久,但是真正起勢得益于Facebook開源了大量Torch的深度學(xué)習(xí)模塊和擴展漓柑。Torch另外一個特殊之處是采用了編程語言Lua(該語言曾被用來開發(fā)視頻游戲)教硫。
Torch的優(yōu)勢:
1、構(gòu)建模型簡單
2辆布、高度模塊化
3瞬矩、快速高效的GPU支持
4、通過LuaJIT接入C
5锋玲、數(shù)值優(yōu)化程序等
6景用、可嵌入到iOS、Android和FPGA后端的接口
三.Caffe
Caffe由加州大學(xué)伯克利的PHD賈揚清開發(fā)惭蹂,全稱Convolutional Architecture for Fast Feature Embedding伞插,是一個清晰而高效的開源深度學(xué)習(xí)框架,目前由伯克利視覺學(xué)中心(Berkeley Vision and Learning Center盾碗,BVLC)進行維護媚污。(賈揚清曾就職于MSRA、NEC廷雅、Google Brain耗美,他也是TensorFlow的作者之一京髓,目前任職于Facebook FAIR實驗室。)
Caffe基本流程:Caffe遵循了神經(jīng)網(wǎng)絡(luò)的一個簡單假設(shè)——所有的計算都是以layer的形式表示的幽歼,layer做的事情就是獲得一些數(shù)據(jù)朵锣,然后輸出一些計算以后的結(jié)果。比如說卷積——就是輸入一個圖像甸私,然后和這一層的參數(shù)(filter)做卷積诚些,然后輸出卷積的結(jié)果。每一個層級(layer)需要做兩個計算:前向forward是從輸入計算輸出皇型,然后反向backward是從上面給的gradient來計算相對于輸入的gradient诬烹,只要這兩個函數(shù)實現(xiàn)了以后,我們就可以把很多層連接成一個網(wǎng)絡(luò)弃鸦,這個網(wǎng)絡(luò)做的事情就是輸入我們的數(shù)據(jù)(圖像或者語音等)绞吁,然后來計算我們需要的輸出(比如說識別的標(biāo)簽),在訓(xùn)練的時候唬格,我們可以根據(jù)已有的標(biāo)簽來計算損失和gradient家破,然后用gradient來更新網(wǎng)絡(luò)的參數(shù)。
Caffe的優(yōu)勢:
1购岗、上手快:模型與相應(yīng)優(yōu)化都是以文本形式而非代碼形式給出
2汰聋、速度快:能夠運行最棒的模型與海量的數(shù)據(jù)
3、模塊化:方便擴展到新的任務(wù)和設(shè)置上
4喊积、開放性:公開的代碼和參考模型用于再現(xiàn)
5烹困、社區(qū)好:可以通過BSD-2參與開發(fā)與討論
四.Theano
2008年誕生于蒙特利爾理工學(xué)院,Theano派生出了大量深度學(xué)習(xí)Python軟件包,最著名的包括Blocks和Keras乾吻。Theano的核心是一個數(shù)學(xué)表達式的編譯器髓梅,它知道如何獲取你的結(jié)構(gòu)。并使之成為一個使用numpy绎签、高效本地庫的高效代碼枯饿,如BLAS和本地代碼(C++)在CPU或GPU上盡可能快地運行。它是為深度學(xué)習(xí)中處理大型神經(jīng)網(wǎng)絡(luò)算法所需的計算而專門設(shè)計的辜御,是這類庫的首創(chuàng)之一(發(fā)展始于2007年)鸭你,被認(rèn)為是深度學(xué)習(xí)研究和開發(fā)的行業(yè)標(biāo)準(zhǔn)。
Theano的優(yōu)勢:
1擒权、集成NumPy-使用numpy.ndarray
2袱巨、使用GPU加速計算-比CPU快140倍(只針對32位float類型)
3、有效的符號微分-計算一元或多元函數(shù)的導(dǎo)數(shù)
4碳抄、速度和穩(wěn)定性優(yōu)化-比如能計算很小的x的函數(shù)log(1+x)的值
5愉老、動態(tài)地生成C代碼-更快地進行計算
6、廣泛地單元測試和自我驗證-檢測和診斷多種錯誤
7剖效、靈活性好