python-3.x - 如何使用 GlobalAveragePool 层作为模型的输出
问题描述
当我尝试使用另一个模型的输出构建模型时收到此错误。
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
解决方案
我很愚蠢,我做这个有点太晚了,发现一些简单的东西我搞砸了。我需要使用图层的 .output 以获得输出我不能只调用 .get_layer(xxxxxxx) 因为这不起作用
pair_base_model = Model(inputs = base_model.input, outputs=base_model.get_layer('glb_avg_pool').output)
这是工作代码。感谢任何看过这个的人。
推荐阅读
- java - 由于其插件,所有 xml 文件的 Eclipse 错误
- php - 如果事务中发生错误,对表的 id 索引有影响吗?
- php - 如何禁用在 Google App Engine 容器上预安装和启用的一些 php 扩展
- python - 未在 python 中显示 Choropleth 地图,没有错误返回
- google-api - YouTube 数据 API 每日配额减少到 0
- java - Eclipse 中奇怪的 Java Web 应用程序
- html - 如何在 flexbox 中居中文本?
- date - 如何使用 d3 .js 散点图在 1900 年之前的 x 轴上呈现日期
- nativescript - Webpack 编译,找不到本地模块:错误:无法解析
- angular - firebase、angular(7) 和 rxjs