3 回答

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'])

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作為輸出。

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)題中提出。
添加回答
舉報(bào)