摘要:相比于直接使用搭建卷積神經(jīng)網(wǎng)絡(luò),將作為高級(jí),并使用作為后端要簡(jiǎn)單地多。測(cè)試一學(xué)習(xí)模型的類型卷積神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)集任務(wù)小圖片數(shù)據(jù)集目標(biāo)將圖片分類為個(gè)類別根據(jù)每一個(gè)的訓(xùn)練速度,要比快那么一點(diǎn)點(diǎn)。
如果我們對(duì) Keras 在數(shù)據(jù)科學(xué)和深度學(xué)習(xí)方面的流行還有疑問(wèn),那么考慮一下所有的主流云平臺(tái)和深度學(xué)習(xí)框架的支持情況就能發(fā)現(xiàn)它的強(qiáng)大之處。目前,Keras 官方版已經(jīng)支持谷歌的 TensorFlow、微軟的 CNTK、蒙特利爾大學(xué)的 Theano,此外,AWS 去年就宣布 Keras 將支持 Apache MXNet,上個(gè)月發(fā)布的 MXNet 0.11 就新增 Core ML 和 Keras v1.2 的支持。不過(guò)到目前為止 MXNet 好像只支持 Keras v1.2.2 而不是版 2.0.5。
盡管我們可以使用任何 Keras 所支持的后端部署模型,但開發(fā)者和方案架構(gòu)師應(yīng)該了解 Keras 作為各深度學(xué)習(xí)庫(kù)的高級(jí) API,其本質(zhì)上是不支持各個(gè)庫(kù)所提供的全部基本參數(shù)微調(diào)。因此如果我們想要精細(xì)調(diào)整后端框架所提供的所有參數(shù),那么我們較好直接使用深度學(xué)習(xí)框架而不是使用 Keras。當(dāng)然這個(gè)情況會(huì)隨著各種工具添加到 Keras 和深度學(xué)習(xí)框架中而得到改善,但現(xiàn)在 Keras 仍是一個(gè)十分優(yōu)秀的工具,它能極好地適應(yīng)于深度學(xué)習(xí)開發(fā)的早期階段,并且為數(shù)據(jù)科學(xué)家和算法工程師快速構(gòu)建與測(cè)試復(fù)雜的深度學(xué)習(xí)模型提供了強(qiáng)大的工具。
機(jī)器之心也嘗試使用 TensorFlow 作為后端測(cè)試了 Keras,我們發(fā)現(xiàn)整個(gè)模型的搭建非常簡(jiǎn)潔,連入門者都能輕松讀懂整個(gè)網(wǎng)絡(luò)的架構(gòu)。相比于直接使用 TensorFlow 搭建卷積神經(jīng)網(wǎng)絡(luò),將 Keras 作為高級(jí) API,并使用 TensorFlow 作為后端要簡(jiǎn)單地多。后面我們將會(huì)把 Keras 實(shí)現(xiàn) CNN 的代碼與注釋上傳至機(jī)器之心 GitHub 項(xiàng)目中,下圖是我們使用 TensorFlow 作為后端初始化訓(xùn)練的情況:
以下是整個(gè)卷積網(wǎng)絡(luò)的架構(gòu):
上面的代碼清晰地定義了整個(gè)網(wǎng)絡(luò)疊加所使用的層級(jí)。Sequential 代表序貫?zāi)P停炊鄠€(gè)網(wǎng)絡(luò)層的線性堆疊。在建立序貫?zāi)P秃?,我們可以從輸入層開始依次添加不同的層級(jí)以實(shí)現(xiàn)整個(gè)網(wǎng)絡(luò)的構(gòu)建。上面的架構(gòu)首先使用的是 2 維卷積層 Conv2D,卷積核大小為 3*3,激活函數(shù)為 ReLU,其中第一個(gè)參數(shù) 32 代表卷積核數(shù)目。此外,該卷積網(wǎng)絡(luò)還使用了較大池化層 MaxPooling2D,pool_size=(2,2) 為兩個(gè)方向(豎直,水平)上的下采樣因子;Dropout 層,以 0.25 的概率在每次更新參數(shù)時(shí)隨機(jī)斷開輸入的神經(jīng)元;Dense 層,即全連接層;還有 Flatten 層,即將輸入「壓平」,也就是把多維的輸入一維化,常用在從卷積層到全連接層的過(guò)渡。以上是該架構(gòu)的基本層級(jí),更詳細(xì)的代碼及注釋請(qǐng)查看機(jī)器之心 GitHub 項(xiàng)目。
下面是 Jasmeet Bhatia 測(cè)評(píng)的具體情況。
Keras 后端框架性能測(cè)試
Keras 還能使開發(fā)人員快速測(cè)試使用不同深度學(xué)習(xí)框架作為 Keras 后端的相對(duì)性能。Keras 配置文件中有一個(gè)參數(shù)決定了使用哪一個(gè)深度學(xué)習(xí)框架作為后端,因此我們可以構(gòu)建一個(gè)相同的模型在不同的深度學(xué)習(xí)框架(如 TensorFlow、CNTK、Theano)上直接運(yùn)行。而對(duì)于 MXNet 來(lái)說(shuō),由于目前只支持 Keras ver1.2.2,所以我們需要對(duì)代碼做一點(diǎn)點(diǎn)修改就行。當(dāng)然這個(gè)模型可以根據(jù)各個(gè)深度學(xué)習(xí)框架中的不同庫(kù)而進(jìn)行微調(diào)以實(shí)現(xiàn)更好的性能,不過(guò) Keras 仍然提供了很好的機(jī)會(huì)來(lái)比較這些基本庫(kù)之間的性能。
早先已經(jīng)有一些文章比較了 Keras 所支持后端框架的相對(duì)性能,但是對(duì)比的時(shí)間都比較早,且主要是以 TensorFlow 和 Theano 作為后端的對(duì)比。因此本文根據(jù) Keras 和深度學(xué)習(xí)框架的版本在更大的范圍內(nèi)做了一次對(duì)比。
我們首先了解一下用于測(cè)試的配置。所有的性能測(cè)試都在 Azure NC6 VM 上使用 Nvidia Tesla K80 GPU 執(zhí)行,使用的 VM 鏡像是 Ubuntu 上的 Azure DSVM(數(shù)據(jù)科學(xué)虛擬機(jī))。除了其他數(shù)據(jù)科學(xué)工具,我們還預(yù)安裝了 Keras、TensorFlow、Theano 和 MXNet。對(duì)于測(cè)試來(lái)說(shuō),所有的軟件包都是用的版,但因?yàn)?MXNet 只支持 Keras 1.2.2,所以其使用的舊版。
配置
因?yàn)槊恳粋€(gè)深度學(xué)習(xí)框架的依賴項(xiàng)不同,我們的測(cè)試在下面三種配置中運(yùn)行:
性能測(cè)試
為了比較 DL 框架不同的性能,我們?nèi)缦滤鍪褂昧?5 種不同的測(cè)試模型。為了確保沒(méi)有特定的框架得到任何特定的處理,所有模型都來(lái)自 GitHub Keras/examples 倉(cāng)庫(kù)中所維護(hù)的。
模型源代碼地址:https://github.com/fchollet/keras/tree/master/examples
測(cè)試的代碼可以在作者的 GitHub 項(xiàng)目中找到:https://github.com/jasmeetsb/deep-learning-keras-projects
注意:有兩個(gè)測(cè)試 MXNet 并沒(méi)有參與,因?yàn)?MXNet 并不支持版的 Keras,且 MXNet 作為后端運(yùn)行該模型需要調(diào)整大量代碼。在其他三個(gè)測(cè)試中以 MXNet 作為后端也需要進(jìn)行一些細(xì)微的調(diào)整,主要是新版本的 Keras 重命名了一些函數(shù)。
測(cè)試一:CIFAR-10 & CNN
學(xué)習(xí)模型的類型:卷積神經(jīng)網(wǎng)絡(luò)(CNN)
數(shù)據(jù)集/任務(wù):CIFAR-10 小圖片數(shù)據(jù)集
目標(biāo):將圖片分類為 10 個(gè)類別
根據(jù)每一個(gè) epoch 的訓(xùn)練速度,TensorFlow 要比 MXNet 快那么一點(diǎn)點(diǎn)。
而按照準(zhǔn)確度/收斂速度來(lái)說(shuō),CNTK 在前 25 個(gè) epoch 中領(lǐng)先一點(diǎn),而在 50 個(gè) epoch 后,其他框架都到達(dá)相近的準(zhǔn)確度,而 CNTK 卻略微下降。
測(cè)試二:MNIST & CNN
學(xué)習(xí)模型的類型:CNN
數(shù)據(jù)集/任務(wù):MNIST 手寫數(shù)字?jǐn)?shù)據(jù)集
目標(biāo):將圖片分類為 10 類手寫數(shù)字
在該測(cè)試中,TensorFlow 明顯要在訓(xùn)練時(shí)間上更加優(yōu)秀,但在準(zhǔn)確度/收斂速度上所有框架都有相似的特征。
測(cè)試三:MNIST&MLP
學(xué)習(xí)模型的類型:多層感知機(jī)/深度神經(jīng)網(wǎng)絡(luò)
數(shù)據(jù)集/任務(wù):MNIST 手寫數(shù)字?jǐn)?shù)據(jù)集
目標(biāo):將圖片分類為 10 類手寫數(shù)字
在使用 MNIST 數(shù)據(jù)集執(zhí)行標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)測(cè)試中,CNTK、TensorFlow 和 Theano 實(shí)現(xiàn)了相似的分?jǐn)?shù)(2.5 – 2.7 s/epoch),而 MXNet 卻只需要 1.4s/epoch。此外,MXNet 同樣在準(zhǔn)確度/收斂速度上有一點(diǎn)點(diǎn)優(yōu)勢(shì)。
測(cè)試四:MNIST&RNN
學(xué)習(xí)模型的類型:層級(jí)循環(huán)神經(jīng)網(wǎng)絡(luò)(HRNN)
數(shù)據(jù)集/任務(wù):MNIST 手寫數(shù)字?jǐn)?shù)據(jù)集
目標(biāo):將圖片分類為 10 類手寫數(shù)字
在訓(xùn)練時(shí)間上,CNTK 和 MXNet 有相似的性能(162 – 164 s/epoch),TensorFlow 的時(shí)間為 179s/epoch,而 Theano 所需的時(shí)間則顯著地增多。
測(cè)試五:BABI & RNN
學(xué)習(xí)模型的類型:循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)
數(shù)據(jù)集/任務(wù):bAbi Project (https://research.fb.com/downloads/babi/)
目標(biāo):分別根據(jù)故事(story)和問(wèn)題訓(xùn)練兩個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò),致使合并的向量可以回答一系列 bAbi 任務(wù)。
該測(cè)試并沒(méi)有使用 MXNet,TensorFlow 和 Theano 在每一個(gè) epoch 上要比 CNTK 要快了一倍多。
結(jié)語(yǔ)
TensorFlow 在 CNN 測(cè)試中表現(xiàn)都是較好的,但是在 RNN 測(cè)試中表現(xiàn)并不太好。
CNTK 在 Babi RNN 和 MNIST RNN 測(cè)試上要比 TensorFlow 和 Theano 好得多,但是在 CNN 測(cè)試上要比 TensorFlow 差一些。
MXNet 在 RNN 測(cè)試上要比 CNTK 和 TensorFlow 要好一點(diǎn),此外它在 MLP 上要比所有框架的性能都要好。不過(guò) MXNet 并不支持 Keras v2 函數(shù),所以我們并不能在沒(méi)有修正代碼的情況下直接測(cè)試,因此可能會(huì)有一點(diǎn)偏差。
Theano 在深度神經(jīng)網(wǎng)絡(luò)(MLP)中要比 TensorFlow 和 CNTK 好一點(diǎn)。
從上面的結(jié)果可以看出來(lái),所有的深度學(xué)習(xí)框架都有其擅長(zhǎng)的領(lǐng)域,并沒(méi)有哪個(gè)框架一定要比其他框架好。CNTK 可作為 Keras 后端并用于 RNN 的使用案例,TensorFlow 可用于 CNN,而 MXNet 雖然顯示了性能上非常大的潛力,但仍然還是讓人期待其支持所有 Keras 函數(shù)的時(shí)候。在開源社區(qū)中,這些框架都在不斷擴(kuò)展與增強(qiáng),從而提供更好的性能并輕松地部署到產(chǎn)品中。在考慮使用這些深度學(xué)習(xí)框架投入生產(chǎn)時(shí),性能是首要的。在大多數(shù)情況下,我們還需要考慮部署的難易度和其他輔助工具,它們都將幫助我們管理產(chǎn)品化的機(jī)器學(xué)習(xí)模型。最后,所有的框架性能都是在作為 Keras 后端時(shí)測(cè)評(píng)的,所以會(huì)有一點(diǎn)誤差,不過(guò)本文至少可以幫助大家對(duì)這些框架的性能有一定了解。此外本文在大家采用不同后端時(shí)可以給出一點(diǎn)相對(duì)客觀的建議。
原文鏈接:http://www.datasciencecentral.com/profiles/blogs/search-for-the-fastest-deep-learning-framework-supported-by-keras
歡迎加入本站公開興趣群商業(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/4607.html
摘要:表示,的賈揚(yáng)清對(duì)他的這一項(xiàng)目給予了很多幫助,賈揚(yáng)清告訴他,的好幾個(gè)網(wǎng)絡(luò),較大瓶頸都是,如果想要實(shí)現(xiàn)一流的性能,賈揚(yáng)清建議較好使用異步,這樣會(huì)有很大的幫助。,和則是默認(rèn)啟用這項(xiàng)功能。 微軟數(shù)據(jù)科學(xué)家Ilia Karmanov做了一個(gè)項(xiàng)目,使用高級(jí)API測(cè)試8種常用深度學(xué)習(xí)框架的性能(因?yàn)镵eras有TF,CNTK和Theano,所以實(shí)際是10種)。Karmanov希望這個(gè)項(xiàng)目能夠幫助數(shù)據(jù)科學(xué)家...
摘要:在兩個(gè)平臺(tái)三個(gè)平臺(tái)下,比較這五個(gè)深度學(xué)習(xí)庫(kù)在三類流行深度神經(jīng)網(wǎng)絡(luò)上的性能表現(xiàn)。深度學(xué)習(xí)的成功,歸因于許多層人工神經(jīng)元對(duì)輸入數(shù)據(jù)的高表征能力。在年月,官方報(bào)道了一個(gè)基準(zhǔn)性能測(cè)試結(jié)果,針對(duì)一個(gè)層全連接神經(jīng)網(wǎng)絡(luò),與和對(duì)比,速度要快上倍。 在2016年推出深度學(xué)習(xí)工具評(píng)測(cè)的褚曉文團(tuán)隊(duì),趕在猴年最后一天,在arXiv.org上發(fā)布了的評(píng)測(cè)版本。這份評(píng)測(cè)的初版,通過(guò)國(guó)內(nèi)AI自媒體的傳播,在國(guó)內(nèi)業(yè)界影響很...
摘要:但年月,宣布將在年終止的開發(fā)和維護(hù)。性能并非最優(yōu),為何如此受歡迎粉絲團(tuán)在過(guò)去的幾年里,出現(xiàn)了不同的開源深度學(xué)習(xí)框架,就屬于其中典型,由谷歌開發(fā)和支持,自然引發(fā)了很大的關(guān)注。 Keras作者Fran?ois Chollet剛剛在Twitter貼出一張圖片,是近三個(gè)月來(lái)arXiv上提到的深度學(xué)習(xí)開源框架排行:TensorFlow排名第一,這個(gè)或許并不出意外,Keras排名第二,隨后是Caffe、...
摘要:下圖總結(jié)了絕大多數(shù)上的開源深度學(xué)習(xí)框架項(xiàng)目,根據(jù)項(xiàng)目在的數(shù)量來(lái)評(píng)級(jí),數(shù)據(jù)采集于年月初。然而,近期宣布將轉(zhuǎn)向作為其推薦深度學(xué)習(xí)框架因?yàn)樗С忠苿?dòng)設(shè)備開發(fā)。該框架可以出色完成圖像識(shí)別,欺詐檢測(cè)和自然語(yǔ)言處理任務(wù)。 很多神經(jīng)網(wǎng)絡(luò)框架已開源多年,支持機(jī)器學(xué)習(xí)和人工智能的專有解決方案也有很多。多年以來(lái),開發(fā)人員在Github上發(fā)布了一系列的可以支持圖像、手寫字、視頻、語(yǔ)音識(shí)別、自然語(yǔ)言處理、物體檢測(cè)的...
摘要:我們對(duì)種用于數(shù)據(jù)科學(xué)的開源深度學(xué)習(xí)庫(kù)作了排名。于年月發(fā)布了第名,已經(jīng)躋身于深度學(xué)習(xí)庫(kù)的上半部分。是最流行的深度學(xué)習(xí)前端第位是排名較高的非框架庫(kù)。頗受對(duì)數(shù)據(jù)集使用深度學(xué)習(xí)的數(shù)據(jù)科學(xué)家的青睞。深度學(xué)習(xí)庫(kù)的完整列表來(lái)自幾個(gè)來(lái)源。 我們對(duì)23種用于數(shù)據(jù)科學(xué)的開源深度學(xué)習(xí)庫(kù)作了排名。這番排名基于權(quán)重一樣大小的三個(gè)指標(biāo):Github上的活動(dòng)、Stack Overflow上的活動(dòng)以及谷歌搜索結(jié)果。排名結(jié)果...
閱讀 1456·2021-11-22 13:52
閱讀 1281·2021-09-29 09:34
閱讀 2689·2021-09-09 11:40
閱讀 3030·2019-08-30 15:54
閱讀 1255·2019-08-30 15:53
閱讀 971·2019-08-30 11:01
閱讀 1354·2019-08-29 17:22
閱讀 1942·2019-08-26 10:57