[英]keras: insert layers to the beginning (near the input) of an existing model
我需要在現有 model 的開頭添加圖層。但是,我需要在“主要 model 級別”上添加圖層,也就是說我不能使用經典的功能方法。 例如,如果我使用類似的東西:
from keras.layers import Dense,Reshape, Input
inp = Input(shape=(15,))
d1 = Dense(224*224*3, activation='linear')(inp)
r1 = Reshape((224,224,3))
from keras import Model
model_mod = r1(d1)
model_mod = mobilenet(model_mod)
model_mod = Model(inp, model_mod)
我獲得:
Layer (type) Output Shape Param #
=================================================================
input_5 (InputLayer) (None, 15) 0
_________________________________________________________________
dense_4 (Dense) (None, 150528) 2408448
_________________________________________________________________
reshape_4 (Reshape) (None, 224, 224, 3) 0
_________________________________________________________________
mobilenet_1.00_224 (Model) (None, 1000) 4253864
因此,我獲得了一個帶有嵌套的mobil.net_1.00_224 (Model)子模型的 model。 相反,我希望嵌套子模型的層以層的形式而不是(子)模型的形式“添加”在新的頂層之后(即,在“reshape_4”之后)。 換句話說,會是這樣的:
modelB_input = modelB.input
for layer in modelB.layers:
if layer == modelB_input:
continue
modelA.add(layer)
此代碼適用於簡單的順序模型(例如,vgg、mobil.net),但對於連接不是嚴格順序的更復雜的模型(例如,inception、re.net),此代碼不起作用,因為無法使用add
重新連接層sequential
model的方法。有什么想法嗎?
也許你必須添加 model_mod.input 作為參數:
model_mod = r1(d1)
base_out = mobilenet(model_mod)
out =Flatten()(base_out)
model_mod = Model(inp, out)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.