web-dev-qa-db-fra.com

keras: utiliser une sortie de modèle comme autre entrée de modèle

J'ajoute une couche dense avant le modèle InceptionResNetV2 (pré-formé) Ceci est la sortie d'InceptionResNetV2

model_base = InceptionResNetV2(include_top=True, weights='imagenet')
x = model_base.get_layer('avg_pool').output
x = Dense(3, activation='softmax')(x)

C'est la couche qui sera ajoutée

input1 = Input(shape=input_shape1)
pre1 = Conv2D(filters=3, kernel_size=(5, 5), padding='SAME', 
input_shape=input_shape1, name='first_dense')(input1)
pre = Model(inputs=input1, outputs=pre1)

Ceci combine deux modèles

 after = Model(inputs=pre.output, outputs=x)

 model = Model(inputs=input1, outputs=after.output)

 model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])

utilisation

pre.output

comme

after.input

Mais ça ne marche pas. Comment puis-je le résoudre?

10
cwzat cwzat

Créons d'abord un nouveau modèle à partir de model_base, car vous voulez obtenir une sortie antérieure.

Votre code:

model_base = InceptionResNetV2(include_top=True, weights='imagenet')
x = model_base.get_layer('avg_pool').output
x = Dense(3, activation='softmax')(x)

Nouveau model_base:

model_base = Model(model_base.input, x)

Maintenant, il est important de passer la sortie pre1 à ce modèle:

base_out = model_base(pre1)     

C'est tout:

model = Model(input1, base_out)
13
Daniel Möller