最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Keras 實(shí)現(xiàn)加載預(yù)訓(xùn)練模型并凍結(jié)網(wǎng)絡(luò)的層

 更新時(shí)間:2020年06月15日 10:11:58   作者:IFT_jason  
這篇文章主要介紹了Keras 實(shí)現(xiàn)加載預(yù)訓(xùn)練模型并凍結(jié)網(wǎng)絡(luò)的層,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

在解決一個(gè)任務(wù)時(shí),我會(huì)選擇加載預(yù)訓(xùn)練模型并逐步fine-tune。比如,分類任務(wù)中,優(yōu)異的深度學(xué)習(xí)網(wǎng)絡(luò)有很多。

ResNet, VGG, Xception等等... 并且這些模型參數(shù)已經(jīng)在imagenet數(shù)據(jù)集中訓(xùn)練的很好了,可以直接拿過(guò)來(lái)用。

根據(jù)自己的任務(wù),訓(xùn)練一下最后的分類層即可得到比較好的結(jié)果。此時(shí),就需要“凍結(jié)”預(yù)訓(xùn)練模型的所有層,即這些層的權(quán)重永不會(huì)更新。

以Xception為例:

加載預(yù)訓(xùn)練模型:

from tensorflow.python.keras.applications import Xception
model = Sequential()
model.add(Xception(include_top=False, pooling='avg', weights='imagenet'))
model.add(Dense(NUM_CLASS, activation='softmax'))

include_top = False : 不包含頂層的3個(gè)全鏈接網(wǎng)絡(luò)

weights : 加載預(yù)訓(xùn)練權(quán)重

隨后,根據(jù)自己的分類任務(wù)加一層網(wǎng)絡(luò)即可。

網(wǎng)絡(luò)具體參數(shù):

model.summary

得到兩個(gè)網(wǎng)絡(luò)層,第一層是xception層,第二層為分類層。

由于未凍結(jié)任何層,trainable params為:20, 811, 050

凍結(jié)網(wǎng)絡(luò)層:

由于第一層為xception,不想更新xception層的參數(shù),可以加以下代碼:

model.layers[0].trainable = False

凍結(jié)預(yù)訓(xùn)練模型中的層

如果想凍結(jié)xception中的部分層,可以如下操作:

from tensorflow.python.keras.applications import Xception
model = Sequential()
model.add(Xception(include_top=False, pooling='avg', weights='imagenet'))
model.add(Dense(NUM_CLASS, activation='softmax'))
for i, layer in enumerate(model.layers[0].layers):
 if i > 115:
 layer.trainable = True
 else:
 layer.trainable = False
 print(i, layer.name, layer.trainable)

加載所有預(yù)訓(xùn)練模型的層

若想把xeption的所有層應(yīng)用在訓(xùn)練自己的數(shù)據(jù),并改變分類數(shù)。可以如下操作:

model = Sequential()
model.add(Xception(include_top=True, weights=None, classes=NUM_CLASS))

* 如果想指定classes,有兩個(gè)條件:include_top:True, weights:None。否則無(wú)法指定classes

補(bǔ)充知識(shí):如何利用預(yù)訓(xùn)練模型進(jìn)行模型微調(diào)(如凍結(jié)某些層,不同層設(shè)置不同學(xué)習(xí)率等)

由于預(yù)訓(xùn)練模型權(quán)重和我們要訓(xùn)練的數(shù)據(jù)集存在一定的差異,且需要訓(xùn)練的數(shù)據(jù)集有大有小,所以進(jìn)行模型微調(diào)、設(shè)置不同學(xué)習(xí)率就變得比較重要,下面主要分四種情況進(jìn)行討論,錯(cuò)誤之處或者不足之處還請(qǐng)大佬們指正。

(1)待訓(xùn)練數(shù)據(jù)集較小,與預(yù)訓(xùn)練模型數(shù)據(jù)集相似度較高時(shí)。例如待訓(xùn)練數(shù)據(jù)集中數(shù)據(jù)存在于預(yù)訓(xùn)練模型中時(shí),不需要重新訓(xùn)練模型,只需要修改最后一層輸出層即可。

(2)待訓(xùn)練數(shù)據(jù)集較小,與預(yù)訓(xùn)練模型數(shù)據(jù)集相似度較小時(shí)。可以凍結(jié)模型的前k層,重新模型的后n-k層。凍結(jié)模型的前k層,用于彌補(bǔ)數(shù)據(jù)集較小的問(wèn)題。

(3)待訓(xùn)練數(shù)據(jù)集較大,與預(yù)訓(xùn)練模型數(shù)據(jù)集相似度較大時(shí)。采用預(yù)訓(xùn)練模型會(huì)非常有效,保持模型結(jié)構(gòu)不變和初始權(quán)重不變,對(duì)模型重新訓(xùn)練

(4)待訓(xùn)練數(shù)據(jù)集較大,與預(yù)訓(xùn)練模型數(shù)據(jù)集相似度較小時(shí)。采用預(yù)訓(xùn)練模型不會(huì)有太大的效果,可以使用預(yù)訓(xùn)練模型或者不使用預(yù)訓(xùn)練模型,然后進(jìn)行重新訓(xùn)練。

以上這篇Keras 實(shí)現(xiàn)加載預(yù)訓(xùn)練模型并凍結(jié)網(wǎng)絡(luò)的層就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

阳朔县| 牙克石市| 汽车| 金湖县| 碌曲县| 康保县| 奇台县| 荥经县| 桦甸市| 凌海市| 崇礼县| 镇雄县| 志丹县| 五家渠市| 兰溪市| 长治市| 德江县| 博兴县| 夹江县| 行唐县| 来凤县| 嘉荫县| 扎囊县| 太仆寺旗| 古交市| 永定县| 离岛区| 瑞丽市| 河西区| 三明市| 上蔡县| 贵德县| 合肥市| 洞头县| 衡山县| 六枝特区| 青海省| 平陆县| 鄂托克前旗| 吴江市| 承德市|