中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

基于 Keras 對深度學(xué)習(xí)模型進(jìn)行微調(diào)的全面指南 Part 2

2018-08-16    來源:raincent

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用
原標(biāo)題 A Comprehensive guide to Fine-tuning Deep Learning Models in Keras (Part I),作者為 Felix Yu 。

本部分屬該兩部系列中的第二部分,該系列涵蓋了基于 Keras 對深度學(xué)習(xí)模型的微調(diào)。第一部分闡述微調(diào)背后的動(dòng)機(jī)和原理,并簡要介紹常用的做法和技巧。本部分將詳細(xì)地指導(dǎo)如何在 Keras 中實(shí)現(xiàn)對流行模型 VGG,Inception 和 ResNet 的微調(diào)。

為什么選擇 Keras ?

Keras 是建立在 Theano 或 TensorFlow 之上的一個(gè)極簡的神經(jīng)網(wǎng)絡(luò)庫。該庫允許開發(fā)人員快速地將想法原型化。除非你正在做一些涉及制定具有截然不同的激活機(jī)制的神經(jīng)架構(gòu)的前沿研究,否則 Keras 將提供構(gòu)建相當(dāng)復(fù)雜的神經(jīng)網(wǎng)絡(luò)所需的所有構(gòu)建模塊。

同時(shí)附帶了大量的文檔和在線資源。

硬件說明

我強(qiáng)烈建議在涉及繁重計(jì)算的Covnet訓(xùn)練時(shí),使用GPU加速。速度差異相當(dāng)大,我們談?wù)摰?GPU 大約幾小時(shí)而 CPU 需要幾天。

我推薦使用 GTX 980 Ti 或者有點(diǎn)貴的 GTX 1080,它售價(jià)約 600 美元。

Keras 微調(diào)

我已經(jīng)實(shí)現(xiàn)了基于 Keras 的微調(diào)啟動(dòng)腳本,這些腳本存放在這個(gè) github 頁面中。包括 VGG16,VGG19,GoogleLeNet,nception-V3 和 ResNet50 的實(shí)現(xiàn)。這樣,你就可以為自己的微調(diào)任務(wù)定制腳本。

下面是如何使用腳本微調(diào) VGG16 和 Inception-V3 模型的詳細(xì)演練。

VGG16 微調(diào)

VGG16 是牛津大學(xué)視覺幾何組(VGG)在 2014 年 ILVRC(ImageNet)競賽中使用的 16 層卷積神經(jīng)網(wǎng)絡(luò)。該模型在驗(yàn)證集上達(dá)到了 7.5% 的前 5 錯(cuò)誤率,這使得他們在競賽中獲得了第二名。

VGG16 模型示意圖:

 

 

可以在 vgg16.py 中找到用于微調(diào) VGG16 的腳本。vgg_std16_model 函數(shù)的第一部分是 VGG 模型的結(jié)構(gòu)。定義全連接層之后,我們通過下面一行將 ImageNet 預(yù)訓(xùn)練權(quán)重加載到模型中:

 

 

為了進(jìn)行微調(diào),我們截?cái)嗔嗽嫉?softmax 層,并使用下面一段我們自己的代碼替換:

 

 

最后一行的 num_class 變量代表我們分類任務(wù)中的類別標(biāo)簽的數(shù)量。

有時(shí),我們希望凍結(jié)前幾層的權(quán)重,使它們在整個(gè)微調(diào)過程中保持不變。假設(shè)我們想凍結(jié)前 10 層的權(quán)重,可以通過以下幾行代碼來完成:

 

 

然后,我們通過使用隨機(jī)梯度下降 (SGD) 算法最小化交叉熵?fù)p失函數(shù)來微調(diào)模型。注意:我們使用的初始學(xué)習(xí)率為 0.001,小于從頭開始訓(xùn)練的模型學(xué)習(xí)率(通常為 0.01)。

 

 

img_rows,img_cols 和 channel 定義輸入的維度。對于分辨率為 224×224 的彩色圖像,img_rows=img_cols=224,channel=3。

接下來,我們加載數(shù)據(jù)集,將其拆分為訓(xùn)練集和測試集,然后開始微調(diào)模型:

 

 

微調(diào)過程需要一段時(shí)間,具體取決于你的硬件。完成后,我們使用模型對驗(yàn)證集進(jìn)行預(yù)測,并且返回交叉熵?fù)p失函數(shù)的分?jǐn)?shù)。

 

 

Inception-V3 微調(diào)。 Inception-V3 在 2015 年 ImageNet 競賽中獲得第二名,驗(yàn)證集上的前 5 個(gè)錯(cuò)誤率為 5.6%。

該模型的特點(diǎn)是使用了Inception模塊,它是由不同維度的內(nèi)核生產(chǎn)的特征映射的串聯(lián)。

27 層 Inception-V1 模型示意圖(類似于 V3 的想法):

 

 

用于微調(diào) Inception-V3 的代碼可以在 inception_v3.py 中找到。這個(gè)過程與 VGG16 很相似,但有細(xì)微差別。由于Inception模塊分支需要合并,Inception-V3 不使用 Keras 的序列模型,因此我們不能簡單地使用 model.pop() 截?cái)囗攲印?/p>

取而代之的是,在創(chuàng)建模型并加載 ImageNet 權(quán)重之后,我們通過在最后一個(gè)起始模塊(X)上定義另一個(gè)全連接的 softmax(x_newfc) 來執(zhí)行等效于頂層截?cái)唷_@使用以下代碼來完成:

 

 

這就是 Inception-V3。可以在此處找到其他模型(如 VGG19,GoogleLeNet 和 ResNet)。

網(wǎng)絡(luò)微調(diào)操作

如果你是深度學(xué)習(xí)或者計(jì)算機(jī)視覺的從業(yè)人員,很可能你已經(jīng)嘗試過微調(diào)預(yù)訓(xùn)練的網(wǎng)絡(luò)來解決自己的分類問題。

對我來說,我遇到了有趣的 Kaggle 比賽,要求候選人通過分析車載攝像頭圖像來識(shí)別注意力不集中的駕駛員。這是我嘗試使用基于 Keras 微調(diào)的好機(jī)會(huì)。 按照上面列出的微調(diào)方法,結(jié)合數(shù)據(jù)預(yù)處理、數(shù)據(jù)增強(qiáng)和模型集成,我們團(tuán)隊(duì)在競賽中獲得了前 4% 的名次。

本文詳細(xì)介紹了我們使用的方法和經(jīng)驗(yàn)。

標(biāo)簽: Google 代碼 腳本 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:理解Python數(shù)據(jù)類:Dataclass fields 的概述(下)

下一篇:在工程領(lǐng)域中,機(jī)器學(xué)習(xí)的數(shù)學(xué)理論基礎(chǔ)尤為重要