15

我在 InceptionResNetV2 模型(预训练)之前添加了一个密集层这是 InceptionResNetV2 输出

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

这是要添加的图层

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)

这是结合两个模型

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

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

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

采用

pre.output

作为

after.input

但它不起作用。我该如何解决?

4

1 回答 1

22

首先让我们从 model_base 创建一个新模型,因为您想获得更早的输出。

你的代码:

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

model_base

model_base = Model(model_base.input, x)

现在,将输出传递pre1给这个模型很重要:

base_out = model_base(pre1)     

就是这样:

model = Model(input1, base_out)
于 2017-12-06T15:47:11.087 回答