当我尝试使用另一个模型的输出来构建模型时,收到此错误。
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
答案 0 :(得分:0)
我很愚蠢,我为此做的太晚了,发现我搞砸了一些简单的东西。 我需要在图层上使用.output以获得输出,我不能只调用.get_layer(xxxxxxx),因为这将无法工作
pair_base_model = Model(inputs = base_model.input, outputs=base_model.get_layer('glb_avg_pool').output)
这是工作代码。 感谢任何看过这个的人。