如何使用GlobalAveragePool图层作为模型的输出

时间:2019-09-10 00:48:07

标签: python-3.x tensorflow keras

当我尝试使用另一个模型的输出来构建模型时,收到此错误。

Output tensors to a Model must be the output of a Keras `Layer` (thus holding past layer metadata). Found: <keras.layers.pooling.GlobalAveragePooling2D object at 0x7Somthing or another

我想做的是使用经过微调的模型作为基础模型,并使用不同的方法(SCNN而不是CNN)保留整个内容。

这就是我声明模型的方式以及错误之处。

pair_base_model = Model(inputs = base_model.input, outputs=base_model.get_layer('glb_avg_pool'))

这就是我加载先前模型的方式

base_model = load_model('../input/base-model-reid/0.ckpt')
print(base_model.summary())

哪个给我这个

......... Whole bunch of other stuff
block14_sepconv2_act (Activatio (None, 7, 7, 2048)   0           block14_sepconv2_bn[0][0]        
__________________________________________________________________________________________________
glb_avg_pool (GlobalAveragePool (None, 2048)         0           block14_sepconv2_act[0][0]       
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 1502)         3077598     glb_avg_pool[0][0]               
==================================================================================================
Total params: 23,939,078
Trainable params: 10,980,862
Non-trainable params: 12,958,216
__________________________________________________________________________________________________
None

1 个答案:

答案 0 :(得分:0)

我很愚蠢,我为此做的太晚了,发现我搞砸了一些简单的东西。 我需要在图层上使用.output以获得输出,我不能只调用.get_layer(xxxxxxx),因为这将无法工作

pair_base_model = Model(inputs = base_model.input, outputs=base_model.get_layer('glb_avg_pool').output)

这是工作代码。 感谢任何看过这个的人。