第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何從 keras 模型中刪除層以用作創(chuàng)建另一個(gè)模型的基線

如何從 keras 模型中刪除層以用作創(chuàng)建另一個(gè)模型的基線

慕少森 2023-04-18 10:46:55
我需要使用 Keras(keras.applications.VGG16)中的預(yù)訓(xùn)練模型作為從它的第一層創(chuàng)建另一個(gè)模型(用于進(jìn)行遷移學(xué)習(xí))的基線。最終目標(biāo)是凍結(jié)并導(dǎo)出模型,以便在帶有 AIY 視覺(jué)套件的樹莓派上部署。我嘗試了以下常見(jiàn)方法:model_base = keras.applications.VGG16(input_tensor=inputs)x = model_base.get_layer(backbone_layer).outputx = keras.layers.Flatten()(x)x = keras.layers.Dense(1)(x)model = keras.models.Model(inputs=inputs, outputs=x)我也在嘗試使用:model_base._layers.pop() 我調(diào)用 pop() n 次,其中“n”是我想要擺脫的最終層數(shù)。它似乎在這兩種情況下都有效,當(dāng)我使用 new_model.summary() 它只顯示所需的 VGG16 模型的第一層加上為自定義添加的新層,但是當(dāng)導(dǎo)出模型并為 tf-lite 編譯器編譯時(shí)回報(bào):設(shè)備內(nèi)存不足,無(wú)法運(yùn)行模型這很奇怪,因?yàn)樯傻哪P停?pb 文件和層數(shù))比其他可以正確導(dǎo)入的手動(dòng)定義的模型更小,在分析 tensorboard 并將 .pb 文件導(dǎo)出為文本后,我發(fā)現(xiàn)原始模型正在也導(dǎo)出(所有圖層,甚至是未使用和使用 pop() 刪除的圖層),而不僅僅是新圖層(在 tensorboard 中看到有 2 個(gè)并行模型,右邊是所需的模型,但原始模型的原始層仍顯示在左側(cè),原始模型的那部分也存在于導(dǎo)出的 .pb 文件中)我的問(wèn)題是我怎樣才能明確地從 keras.applications.VGG16 模型中刪除未使用的層并只保留第一層 + 新的自定義層?使用 pop() 沒(méi)有用,也嘗試了 del 層(在 for 循環(huán)中)失敗?;蛘呶疫€有什么其他選擇可以通過(guò)僅保留第一層然后將其連接到其他一些自定義層來(lái)使用預(yù)訓(xùn)練模型作為基線。
查看完整描述

3 回答

?
侃侃無(wú)極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

最簡(jiǎn)單的方法是在 VGG16 中設(shè)置 include_top=False, pooling=max。然后看下面的代碼:


x=backbone.layers[-1].output

predictions=Dense (len(classes), activation='softmax')(x)

model = Model(inputs=backbone.input, outputs=predictions)    

model.compile(Adamax(lr=lr_rate), loss='categorical_crossentropy', metrics=['accuracy'])



查看完整回答
反對(duì) 回復(fù) 2023-04-18
?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊

它實(shí)際上并不是刪除層,而是創(chuàng)建一個(gè)沒(méi)有它的新模型。


我真的不明白你想做什么,但物體檢測(cè)器通常會(huì)這樣做。


inputs = keras.layers.Input((None, None, 3), include_top=False)

backbone = keras.applications.VGG16(input_tensor=inputs)

x = backbone.get_layer('block1_conv2').output

x = keras.layers.Dense(50)(x)

model = keras.models.Model(inputs=inputs, outputs=x, name=backbone.name)

這將產(chǎn)生一個(gè)只有前兩層的模型,并添加一個(gè)新的Dense作為輸出。


查看完整回答
反對(duì) 回復(fù) 2023-04-18
?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊

使用 model.save() 保存所需的內(nèi)容,清除 tf 會(huì)話,然后再次加載它可以解決問(wèn)題(如@NatthaphonHongcharoen 所建議(在評(píng)論中):


model.save(model_file)

del model

keras.backend.clear_session()

model = keras.models.load_model(model_file)

現(xiàn)在,tensorflow 中導(dǎo)出的圖僅顯示所需的層,凍結(jié)圖生成一個(gè)較小的 .pb 文件。


然而,另一個(gè)問(wèn)題仍然存在,即使使用基礎(chǔ)模型的單層并添加編譯器仍然說(shuō)的密集層


設(shè)備內(nèi)存不足,無(wú)法運(yùn)行模型。


但這是一個(gè)不同的問(wèn)題,沒(méi)有直接在這個(gè)問(wèn)題中提出。


查看完整回答
反對(duì) 回復(fù) 2023-04-18
  • 3 回答
  • 0 關(guān)注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)