摘要:作為當(dāng)下最熱門的話題,等巨頭都圍繞深度學(xué)習(xí)重點(diǎn)投資了一系列新興項(xiàng)目,他們也一直在支持一些開源深度學(xué)習(xí)框架。八來(lái)自一個(gè)日本的深度學(xué)習(xí)創(chuàng)業(yè)公司,今年月發(fā)布的一個(gè)框架。
深度學(xué)習(xí)(Deep Learning)是機(jī)器學(xué)習(xí)中一種基于對(duì)數(shù)據(jù)進(jìn)行表征學(xué)習(xí)的方法,深度學(xué)習(xí)的好處是用 非 監(jiān)督式或半監(jiān)督式 的特征學(xué)習(xí)、分層特征提取高效算法來(lái)替代手工獲取特征(feature)。作為當(dāng)下最熱門的話題,Google、Facebook、Microsoft等巨頭都圍繞深度學(xué)習(xí)重點(diǎn)投資了一系列新興項(xiàng)目,他們也一直在支持一些開源深度學(xué)習(xí)框架。
目前研究人員正在使用的深度學(xué)習(xí)框架不盡相同,有 TensorFlow、Torch 、Caffe、Theano、Deeplearning4j等,這些深度學(xué)習(xí)框架被應(yīng)用于 計(jì)算機(jī)視覺(jué) 、 語(yǔ)音識(shí)別、 自然語(yǔ)言處理 與 生物信息學(xué) 等領(lǐng)域,并獲取了極好的效果。
下面讓我們一起來(lái)認(rèn)識(shí)目前深度學(xué)習(xí)中最常使用的八大開源框架:
一.TensorFlow
TensorFlow是一款開源的數(shù)學(xué)計(jì)算軟件,使用數(shù)據(jù)流圖(Data Flow Graph)的形式進(jìn)行計(jì)算。圖中的節(jié)點(diǎn)代表數(shù)學(xué)運(yùn)算,而圖中的線條表示多維數(shù)據(jù)數(shù)組(tensor)之間的交互。TensorFlow靈活的架構(gòu)可以部署在一個(gè)或多個(gè)CPU、GPU的臺(tái)式以及服務(wù)器中,或者使用單一的API應(yīng)用在移動(dòng)設(shè)備中。TensorFlow最初是由研究人員和Google Brain團(tuán)隊(duì)針對(duì)機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)進(jìn)行研究所開發(fā)的,目前開源之后可以在幾乎各種領(lǐng)域適用。
Data Flow Graph: 使用有向圖的節(jié)點(diǎn)和邊共同描述數(shù)學(xué)計(jì)算。graph中的nodes代表數(shù)學(xué)操作,也可以表示數(shù)據(jù)輸入輸出的端點(diǎn)。邊表示節(jié)點(diǎn)之間的關(guān)系,傳遞操作之間互相使用的多位數(shù)組(tensors),tensor在graph中流動(dòng)——這也就是TensorFlow名字的由來(lái)。一旦節(jié)點(diǎn)相連的邊傳來(lái)了數(shù)據(jù)流,節(jié)點(diǎn)就被分配到計(jì)算設(shè)備上異步的(節(jié)點(diǎn)間)、并行的(節(jié)點(diǎn)內(nèi))執(zhí)行。
TensorFlow的特點(diǎn):
機(jī)動(dòng)性: TensorFlow并不只是一個(gè)規(guī)則的neural network庫(kù),事實(shí)上如果你可以將你的計(jì)算表示成data flow graph的形式,就可以使用TensorFlow。用戶構(gòu)建graph,寫內(nèi)層循環(huán)代碼驅(qū)動(dòng)計(jì)算,TensorFlow可以幫助裝配子圖。定義新的操作只需要寫一個(gè)Python函數(shù),如果缺少底層的數(shù)據(jù)操作,需要寫一些C++代碼定義操作。
可適性強(qiáng): 可以應(yīng)用在不同設(shè)備上,cpus,gpu,移動(dòng)設(shè)備,云平臺(tái)等
自動(dòng)差分: TensorFlow的自動(dòng)差分能力對(duì)很多基于Graph的機(jī)器學(xué)習(xí)算法有益
多種編程語(yǔ)言可選: TensorFlow很容易使用,有python接口和C++接口。其他語(yǔ)言可以使用SWIG工具使用接口。(SWIG—Simplified Wrapper and Interface Generator, 是一個(gè)非常優(yōu)秀的開源工具,支持將 C/C++ 代碼與任何主流腳本語(yǔ)言相集成。)
最優(yōu)化表現(xiàn): 充分利用硬件資源,TensorFlow可以將graph的不同計(jì)算單元分配到不同設(shè)備執(zhí)行,使用TensorFlow處理副本。
二.Torch
Torch是一個(gè)有大量機(jī)器學(xué)習(xí)算法支持的科學(xué)計(jì)算框架,其誕生已經(jīng)有十年之久,但是真正起勢(shì)得益于Facebook開源了大量Torch的深度學(xué)習(xí)模塊和擴(kuò)展。Torch另外一個(gè)特殊之處是采用了編程語(yǔ)言Lua(該語(yǔ)言曾被用來(lái)開發(fā)視頻游戲)。
Torch的優(yōu)勢(shì):
構(gòu)建模型簡(jiǎn)單
高度模塊化
快速高效的GPU支持
通過(guò)LuaJIT接入C
數(shù)值優(yōu)化程序等
可嵌入到iOS、Android和FPGA后端的接口
三.Caffe
Caffe由加州大學(xué)伯克利的PHD賈揚(yáng)清開發(fā),全稱Convolutional Architecture for Fast Feature Embedding,是一個(gè)清晰而高效的開源深度學(xué)習(xí)框架,目前由伯克利視覺(jué)學(xué)中心(Berkeley Vision and Learning Center,BVLC)進(jìn)行維護(hù)。(賈揚(yáng)清曾就職于MSRA、NEC、Google Brain,他也是TensorFlow的作者之一,目前任職于Facebook FAIR實(shí)驗(yàn)室。)
Caffe基本流程:Caffe遵循了神經(jīng)網(wǎng)絡(luò)的一個(gè)簡(jiǎn)單假設(shè)——所有的計(jì)算都是以layer的形式表示的,layer做的事情就是獲得一些數(shù)據(jù),然后輸出一些計(jì)算以后的結(jié)果。比如說(shuō)卷積——就是輸入一個(gè)圖像,然后和這一層的參數(shù)(filter)做卷積,然后輸出卷積的結(jié)果。每一個(gè)層級(jí) (layer)需要做兩個(gè)計(jì)算:前向forward是從輸入計(jì)算輸出,然后反向backward是從上面給的gradient來(lái)計(jì)算相對(duì)于輸入的 gradient,只要這兩個(gè)函數(shù)實(shí)現(xiàn)了以后,我們就可以把很多層連接成一個(gè)網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)做的事情就是輸入我們的數(shù)據(jù)(圖像或者語(yǔ)音等),然后來(lái)計(jì)算我們需要的輸出(比如說(shuō)識(shí)別的標(biāo)簽),在訓(xùn)練的時(shí)候,我們可以根據(jù)已有的標(biāo)簽來(lái)計(jì)算損失和gradient,然后用gradient來(lái)更新網(wǎng)絡(luò)的參數(shù)。
Caffe的優(yōu)勢(shì):
上手快:模型與相應(yīng)優(yōu)化都是以文本形式而非代碼形式給出
速度快:能夠運(yùn)行最棒的模型與海量的數(shù)據(jù)
模塊化:方便擴(kuò)展到新的任務(wù)和設(shè)置上
開放性:公開的代碼和參考模型用于再現(xiàn)
社區(qū)好:可以通過(guò)BSD-2參與開發(fā)與討論
四.Theano
2008年誕生于蒙特利爾理工學(xué)院,Theano派生出了大量深度學(xué)習(xí)Python軟件包,最著名的包括Blocks和Keras。 Theano的核心是一個(gè)數(shù)學(xué)表達(dá)式的編譯器,它知道如何獲取你的結(jié)構(gòu)。并使之成為一個(gè)使用numpy、高效本地庫(kù)的高效代碼,如BLAS和本地代碼 (C++)在CPU或GPU上盡可能快地運(yùn)行。它是為深度學(xué)習(xí)中處理大型神經(jīng)網(wǎng)絡(luò)算法所需的計(jì)算而專門設(shè)計(jì)的,是這類庫(kù)的首創(chuàng)之一(發(fā)展始于2007 年),被認(rèn)為是深度學(xué)習(xí)研究和開發(fā)的行業(yè)標(biāo)準(zhǔn)。
Theano的優(yōu)勢(shì):
集成NumPy-使用numpy.ndarray
使用GPU加速計(jì)算-比CPU快140倍(只針對(duì)32位float類型)
有效的符號(hào)微分-計(jì)算一元或多元函數(shù)的導(dǎo)數(shù)
速度和穩(wěn)定性優(yōu)化-比如能計(jì)算很小的x的函數(shù)log(1+x)的值
動(dòng)態(tài)地生成C代碼-更快地進(jìn)行計(jì)算
廣泛地單元測(cè)試和自我驗(yàn)證-檢測(cè)和診斷多種錯(cuò)誤
靈活性好
五.Deeplearning4j
顧名思義,Deeplearning4j是“for Java”的深度學(xué)習(xí)框架,也是較早的商用級(jí)別的深度學(xué)習(xí)開源庫(kù)。Deeplearning4j由創(chuàng)業(yè)公司Skymind于2014年6月發(fā)布,使用 Deeplearning4j的不乏埃森哲、雪弗蘭、博斯咨詢和IBM等明星企業(yè)。 DeepLearning4j是一個(gè)面向生產(chǎn)環(huán)境和商業(yè)應(yīng)用的高成熟度深度學(xué)習(xí)開源庫(kù),可與Hadoop和Spark集成,即插即用,方便開發(fā)者在APP 中快速集成深度學(xué)習(xí)功能,可應(yīng)用于以下深度學(xué)習(xí)領(lǐng)域:
人臉/圖像識(shí)別
語(yǔ)音搜索
語(yǔ)音轉(zhuǎn)文字(Speech to text)
垃圾信息過(guò)濾(異常偵測(cè))
電商欺詐偵測(cè)
除了以上幾個(gè)比較成熟知名的項(xiàng)目,還有很多有特色的深度學(xué)習(xí)開源框架也值得關(guān)注:
六.ConvNetJS
這是斯坦福大學(xué)博士生Andrej KarPathy開發(fā)的瀏覽器插件,基于萬(wàn)能的JavaScript可以在你的游覽器中訓(xùn)練深度神經(jīng)模型。 不需要安裝軟件,也不需要GPU。
七.MXNet
出自CXXNet、Minerva、Purine 等項(xiàng)目的開發(fā)者之手,主要用C++ 編寫。MXNet 強(qiáng)調(diào)提高內(nèi)存使用的效率,甚至能在智能手機(jī)上運(yùn)行諸如圖像識(shí)別等任務(wù)。
MXNet的系統(tǒng)架構(gòu)如下圖所示:
從上到下分別為各種主語(yǔ)言的嵌入,編程接口(矩陣運(yùn)算,符號(hào)表達(dá)式,分布式通訊),兩種編程模式的統(tǒng)一系統(tǒng)實(shí)現(xiàn),以及各硬件的支持。
八.Chainer
來(lái)自一個(gè)日本的深度學(xué)習(xí)創(chuàng)業(yè)公司Preferred Networks,今年6月發(fā)布的一個(gè)Python框架。Chainer 的設(shè)計(jì)基于 define by run原則,也就是說(shuō)該網(wǎng)絡(luò)在運(yùn)行中動(dòng)態(tài)定義,而不是在啟動(dòng)時(shí)定義。
歡迎加入本站公開興趣群商業(yè)智能與數(shù)據(jù)分析群
興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價(jià)值的辦法,實(shí)際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)挖掘工具,報(bào)表系統(tǒng)等全方位知識(shí)
QQ群:81035754
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/4388.html
摘要:十年鏟碼,八大體系超千篇數(shù)百萬(wàn)字技術(shù)筆記系列匯總悅享版十年鏟碼兩茫茫,縱思量,卻易忘不覺(jué)筆者步入程序員已有十年。十年之期,正巧筆者從阿里離開,重回打印制造業(yè)的懷抱,希望能依托于設(shè)備優(yōu)勢(shì)逐步真正構(gòu)建分布式制造網(wǎng)絡(luò)。 showImg(https://segmentfault.com/img/remote/1460000020151971); 十年鏟碼,八大體系超千篇數(shù)百萬(wàn)字技術(shù)筆記系列匯總...
摘要:多線程編程這篇文章分析了多線程的優(yōu)缺點(diǎn),如何創(chuàng)建多線程,分享了線程安全和線程通信線程池等等一些知識(shí)。 中間件技術(shù)入門教程 中間件技術(shù)入門教程,本博客介紹了 ESB、MQ、JMS 的一些知識(shí)... SpringBoot 多數(shù)據(jù)源 SpringBoot 使用主從數(shù)據(jù)源 簡(jiǎn)易的后臺(tái)管理權(quán)限設(shè)計(jì) 從零開始搭建自己權(quán)限管理框架 Docker 多步構(gòu)建更小的 Java 鏡像 Docker Jav...
閱讀 3192·2023-04-26 01:39
閱讀 3345·2023-04-25 18:09
閱讀 1612·2021-10-08 10:05
閱讀 3228·2021-09-22 15:45
閱讀 2758·2019-08-30 15:55
閱讀 2393·2019-08-30 15:54
閱讀 3167·2019-08-30 15:53
閱讀 1324·2019-08-29 12:32