自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解六大主流深度學(xué)習(xí)框架

人工智能 深度學(xué)習(xí)
近幾年,隨著深度學(xué)習(xí)的爆炸式發(fā)展,相關(guān)理論和基礎(chǔ)架構(gòu)得到了很大突破,它們奠定了深度學(xué)習(xí)繁榮發(fā)展的基礎(chǔ)。這其中涌現(xiàn)了幾個(gè)著名的深度學(xué)習(xí)平臺(tái),本文將對(duì)這些平臺(tái)進(jìn)行簡要介紹。

一、Theano

Theano由LISA集團(tuán)(現(xiàn)MILA)在加拿大魁北克的蒙特利爾大學(xué)開發(fā),是在BSD許可證下發(fā)布的開源項(xiàng)目,它是用一位希臘數(shù)學(xué)家的名字命名的。

Theano是一個(gè)Python庫,可用于定義、優(yōu)化和計(jì)算數(shù)學(xué)表達(dá)式,特別是多維數(shù)組(numpy.ndarray)。在解決包含大量數(shù)據(jù)問題的時(shí)候,使用Theano編程可實(shí)現(xiàn)比C語言編程更快的運(yùn)行速度。通過GPU加速,Theano甚至可以比基于CPU計(jì)算的C語言快好幾個(gè)數(shù)量級(jí)。

Theano結(jié)合 CAS(Computer Algebra System,計(jì)算機(jī)代數(shù)系統(tǒng))和優(yōu)化編譯器,還可以為多種數(shù)學(xué)運(yùn)算生成定制的C語言代碼。對(duì)于處理包含重復(fù)計(jì)算的復(fù)雜數(shù)學(xué)表達(dá)式任務(wù),計(jì)算速度很重要,因此這種CAS和優(yōu)化編譯器的組合非常有用。對(duì)于需要將每種不同的數(shù)學(xué)表達(dá)式都計(jì)算一遍的情況,Theano可以最小化編譯/解析計(jì)算量,但仍會(huì)給出如自動(dòng)微分那樣的符號(hào)特征。

在過去很長一段時(shí)間里,Theano是深度學(xué)習(xí)開發(fā)與研究的行業(yè)標(biāo)準(zhǔn)。出身學(xué)界的Theano最初是為學(xué)術(shù)研究而設(shè)計(jì)的,這使得深度學(xué)習(xí)領(lǐng)域的許多學(xué)者至今仍在使用Theano。

但隨著TensorFlow在谷歌的支持下強(qiáng)勢崛起,Theano日漸式微,使用的人越來越少。其中標(biāo)志性事件是Theano的創(chuàng)始者之一Ian GoodFellow放棄Theano轉(zhuǎn)去谷歌開發(fā)TensorFlow了。

2017年9月28日,在Theano 1.0正式版發(fā)布前夕,LISA實(shí)驗(yàn)室負(fù)責(zé)人、深度學(xué)習(xí)三巨頭之一的Yoshua Bengio宣布Theano將停止開發(fā):“Theano is Dead.”

盡管Theano將退出歷史舞臺(tái),但作為第一個(gè)Python深度學(xué)習(xí)框架,它很好地完成了自己的使命—為深度學(xué)習(xí)研究人員早期拓荒提供了極大的幫助,同時(shí)也為之后深度學(xué)習(xí)框架的開發(fā)奠定了基本設(shè)計(jì)方向:以計(jì)算圖為框架的核心,采用GPU加速計(jì)算。

對(duì)于深度學(xué)習(xí)新手,可以使用Theano做入門練習(xí),但對(duì)于職業(yè)開發(fā)者,建議使用 TensorFlow。

二、TensorFlow

TensorFlow是Google Brain團(tuán)隊(duì)基于Google在2011年開發(fā)的深度學(xué)習(xí)基礎(chǔ)架構(gòu)DistBelief構(gòu)建的。Google在其所有的應(yīng)用程序中都使用TensorFlow實(shí)現(xiàn)機(jī)器學(xué)習(xí),例如使用Google照相機(jī)和Google語音搜索功能,就間接使用了TensorFlow模型。

TensorFlow在很大程度上可以看作Theano的后繼者,這不僅因?yàn)樗鼈冇泻艽笠慌餐拈_發(fā)者,還因?yàn)樗鼈儞碛邢嘟脑O(shè)計(jì)理念,都基于計(jì)算圖實(shí)現(xiàn)自動(dòng)微分系統(tǒng)。TensorFlow 使用數(shù)據(jù)流圖進(jìn)行數(shù)值計(jì)算,圖中的節(jié)點(diǎn)代表數(shù)學(xué)運(yùn)算,圖中的邊代表在這些節(jié)點(diǎn)之間傳遞的多維數(shù)組。

TensorFlow編程接口支持Python和C++,TensorFlow 1.0版本開始支持Java、Go、R和Haskell API的Alpha版本。此外,TensorFlow還可以在Google Cloud和AWS中運(yùn)行。TensorFlow支持Windows 7、Windows 10和Windows Server 2016系統(tǒng)。

因?yàn)門ensorFlow使用C++ Eigen庫,所以可以在ARM架構(gòu)上編譯和優(yōu)化。這也就意味著用戶可以在各種服務(wù)器和移動(dòng)設(shè)備上部署自己的訓(xùn)練模型,無須執(zhí)行單獨(dú)的模型解碼器或者加載Python解釋器。

作為當(dāng)前最流行的深度學(xué)習(xí)框架,TensorFlow獲得了極大的成功,但在學(xué)習(xí)過程中讀者也需要注意下面一些問題。

因?yàn)門ensorFlow的接口在不斷地快速迭代,并且版本之間不兼容,所以在開發(fā)和調(diào)試過程中可能會(huì)出現(xiàn)問題,例如開源代碼無法在新版的TensorFlow上運(yùn)行。

想學(xué)習(xí)TensorFlow底層運(yùn)行機(jī)制的讀者需要做好心理準(zhǔn)備,TensorFlow在GitHub代碼倉庫的總代碼量超過100萬行,系統(tǒng)設(shè)計(jì)比較復(fù)雜,這將是一個(gè)漫長的學(xué)習(xí)過程。

在代碼層面,對(duì)于同一個(gè)功能,TensorFlow提供了多種實(shí)現(xiàn),這些實(shí)現(xiàn)良莠不齊,使用中還有細(xì)微的區(qū)別,請讀者注意選擇。另外,TensorFlow創(chuàng)造了圖、會(huì)話、命名空間、PlaceHolder等諸多抽象概念,對(duì)普通用戶來說較難理解。

憑借Google強(qiáng)大的推廣能力,TensorFlow已經(jīng)成為當(dāng)今最火的深度學(xué)習(xí)框架,不完美但是最流行。因?yàn)楦鞴臼褂玫目蚣懿唤y(tǒng)一,所以我們有必要多學(xué)習(xí)幾個(gè)流行框架作為知識(shí)儲(chǔ)備,TensorFlow無疑是一個(gè)不錯(cuò)的選擇。

三、MXNet

MXNet是亞馬遜首席科學(xué)家李沐帶領(lǐng)團(tuán)隊(duì)開發(fā)的深度學(xué)習(xí)框架,擁有類似Theano和TensorFlow的數(shù)據(jù)流圖,為多GPU架構(gòu)提供了良好的配置,擁有類似Lasagne和Blocks的高級(jí)別模型構(gòu)建塊,可以在我們需要的任何硬件上運(yùn)行(包括手機(jī))。除了支持Python,MXNet同樣提供了對(duì) R、Julia、C++、Scala、Matlab、Go和Java的接口。

MXNet因其超強(qiáng)的分布式、內(nèi)存/顯存優(yōu)化能力受到開發(fā)者的歡迎。同樣的模型,MXNet往往占用的內(nèi)存和顯存更小,在分布式環(huán)境下,MXNet展現(xiàn)出了明顯優(yōu)于其他框架的擴(kuò)展性能。

MXNet的缺點(diǎn)是推廣力度不夠、接口文檔不完善。雖然MXNet版本快速迭代,但官方API文檔卻長時(shí)間未更新,導(dǎo)致新用戶難以掌握新版本的MXNet,而老用戶又需要查閱源碼才能真正理解MXNet接口的用法。MXNet文檔比較混亂,不太適合新手入門,但其分布性能強(qiáng)大,語言支持比較多,比較適合在云平臺(tái)使用。

四、Keras

Keras是一個(gè)高層神經(jīng)網(wǎng)絡(luò)API,使用Python編寫,并將TensorFlow、Theano及CNTK作為后端。Keras為支持快速實(shí)驗(yàn)而生,能夠快速實(shí)現(xiàn)開發(fā)者的想法。Keras目前是最容易上手的深度學(xué)習(xí)框架,它提供了一致且簡潔的API,能夠極大減少一般應(yīng)用下用戶的工作量。

相比于深度學(xué)習(xí)框架,Keras更像是一個(gè)深度學(xué)習(xí)接口,它構(gòu)建于第三方框架之上。Keras的缺點(diǎn)很明顯:過度封裝導(dǎo)致喪失了靈活性。Keras最初作為Theano的高級(jí)API,后來增加了TensorFlow和CNTK作為后端。

為了屏蔽后端的差異性,Keras提供了一致的用戶接口并做了層層封裝,導(dǎo)致用戶在新增操作或是獲取底層的數(shù)據(jù)信息時(shí)過于困難。同時(shí),過度封裝也使得Keras的程序運(yùn)行十分緩慢,許多Bug都隱藏于封裝之中。在絕大多數(shù)場景下,Keras是本文介紹的所有框架中運(yùn)行最慢的。

學(xué)習(xí)Keras十分容易,但是很快就會(huì)遇到瓶頸,因?yàn)樗粔蜢`活。另外,在使用Keras的大多數(shù)時(shí)間里,用戶主要是在調(diào)用接口,很難真正學(xué)習(xí)到深度學(xué)習(xí)的內(nèi)容。

Keras的過度封裝使其并不適合新手學(xué)習(xí)(無法理解深度學(xué)習(xí)的真正內(nèi)涵),故不推薦。

五、PyTorch

PyTorch是一個(gè)Python優(yōu)先的深度學(xué)習(xí)框架,能夠在強(qiáng)大的GPU加速基礎(chǔ)上實(shí)現(xiàn)張量和動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)。

PyTorch提供了完整的使用文檔、循序漸進(jìn)的用戶指南,作者親自維護(hù)PyTorch論壇,方便用戶交流和解決問題。

Facebook人工智能研究院FAIR對(duì)PyTorch的推廣提供了大力支持。作為當(dāng)今排名前三的深度學(xué)習(xí)研究機(jī)構(gòu),F(xiàn)AIR的支持足以確保PyTorch獲得持續(xù)開發(fā)、更新的保障,不至于像一些個(gè)人開發(fā)的框架那樣曇花一現(xiàn)。如有需要,我們也可以使用Python軟件包(如NumPy、SciPy和Cython)來擴(kuò)展 PyTorch。

相對(duì)于TensorFlow,PyTorch的一大優(yōu)點(diǎn)是它的圖是動(dòng)態(tài)的,而TensorFlow框架是靜態(tài)圖,不利于擴(kuò)展。同時(shí),PyTorch非常簡潔,方便使用。本書選取PyTorch為主要的實(shí)現(xiàn)框架。

如果說TensorFlow的設(shè)計(jì)是“Make it complicated”,Keras的設(shè)計(jì)是“Make it complicated and hide it”,那么PyTorch的設(shè)計(jì)則真正做到了“Keep it simple,stupid”。

六、Caffe

Caffe是基于C++編寫的深度學(xué)習(xí)框架,作者是賈揚(yáng)清,源碼開放(具有Licensed BSD)并提供了命令行工具以及Matlab和Python接口。

Caffe一直是深度學(xué)習(xí)研究者使用的框架,很多研究人員在上面進(jìn)行開發(fā)和優(yōu)化,因而有了不少沉淀,因此Caffe也是流行的深度學(xué)習(xí)框架之一。盡管如此,Caffe也存在不支持多機(jī)、跨平臺(tái)、可擴(kuò)展性差等問題。初學(xué)使用Caffe還需要注意下面兩個(gè)問題。

Caffe的安裝過程需要大量的依賴庫,因此涉及很多安裝版本問題,初學(xué)者須多加注意。

當(dāng)用戶要實(shí)現(xiàn)一個(gè)新的層,就需要用C++實(shí)現(xiàn)它的前向傳播和反向傳播代碼,而如果想要新層運(yùn)行在GPU上,則需要同時(shí)使用CUDA實(shí)現(xiàn)這一層的前向傳播和反向傳播。

Caffe2出自Facebook人工智能實(shí)驗(yàn)室與應(yīng)用機(jī)器學(xué)習(xí)團(tuán)隊(duì),賈楊清仍是主要貢獻(xiàn)者之一。Caffe2在工程上做了很多優(yōu)化,比如運(yùn)行速度、跨平臺(tái)、可擴(kuò)展性等,它可以看作Caffe更細(xì)粒度的重構(gòu),但在設(shè)計(jì)上,Caffe2其實(shí)和TensorFlow更像。目前Caffe2代碼已開源。

在工業(yè)界和學(xué)術(shù)界仍有很多人使用Caffe,而Caffe2的出現(xiàn)給我們提供了更多的選擇。

關(guān)于作者:涂銘,資深數(shù)據(jù)架構(gòu)師和人工智能技術(shù)專家,現(xiàn)就職于騰訊,曾就職于阿里。對(duì)大數(shù)據(jù)、自然語言處理、圖像識(shí)別、Python、Java等相關(guān)技術(shù)有深入的研究,積累了豐富的實(shí)踐經(jīng)驗(yàn)。金智勇,計(jì)算機(jī)視覺算法專家,在計(jì)算機(jī)視覺領(lǐng)域深耕12年?,F(xiàn)就職于百度,曾就職于阿里和三星等知名高新技術(shù)企業(yè)。業(yè)務(wù)領(lǐng)域涵蓋增強(qiáng)現(xiàn)實(shí)、人臉識(shí)別、圖像美化、智能交通、工業(yè)質(zhì)檢等多個(gè)方向,具有豐富的算法研究與落地經(jīng)驗(yàn)。

本文摘編自《深度學(xué)習(xí)與目標(biāo)檢測:工具、原理與算法》,經(jīng)出版方授權(quán)發(fā)布。(ISBN:9787111690344)

責(zé)任編輯:武曉燕 來源: 大數(shù)據(jù)DT
相關(guān)推薦

2022-05-15 23:32:00

元宇宙虛擬世界科技

2021-11-27 05:03:09

框架深度學(xué)習(xí)

2009-07-20 17:42:04

iBATIS入門

2017-01-19 09:45:53

紅帽

2021-12-17 11:55:09

自動(dòng)駕駛數(shù)據(jù)人工智能

2011-12-28 10:18:09

企業(yè)API移動(dòng)開發(fā)優(yōu)化APIOAuth 2.0

2013-12-12 13:02:01

2010-05-18 15:54:25

IIS 7.0

2024-08-12 16:21:18

2016-11-08 18:00:44

機(jī)器學(xué)習(xí)

2020-06-04 07:00:00

機(jī)器學(xué)習(xí)人工智能Python

2010-09-03 14:46:46

CSS縮寫CSS

2023-08-14 12:14:56

2016-01-28 10:26:59

大數(shù)據(jù)平臺(tái)大數(shù)據(jù)采集架構(gòu)分析

2017-08-10 14:30:52

大數(shù)據(jù)數(shù)據(jù)采集架構(gòu)分析

2009-09-15 16:53:50

2019-07-30 08:30:40

Python主流數(shù)據(jù)庫

2015-10-28 10:08:12

學(xué)習(xí)拓?fù)?/a>數(shù)據(jù)分析

2015-08-20 09:15:04

移動(dòng)開發(fā)JS框架javascript

2018-10-25 14:04:25

區(qū)塊鏈技術(shù)區(qū)塊鏈
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)