python - 使用预训练 Inceptionv3 的 Keras 问题
问题描述
我在 Keras 中使用带有 imagenet 权重的 InceptionV3。我使用的 Keras 版本是 2.2.4,Keras-applications 是 1.0.8。张量流版本是 1.14.0。我遵循使用 InceptionV3 进行迁移学习的标准方法,如此处所述。我收到此错误ValueError: Input 0 is incompatible with layer global_average_pooling2d_3: expected ndim=4, found ndim=2
。我发现了一个 GitHub帖子,用户遇到了同样的问题。我遵循了在 GitHub 帖子上解决问题的建议,但我没有这样的运气。MWE在下面
from keras.layers import Input, Dense, Activation, GlobalAveragePooling2D
from keras.models import Model
from keras.applications.inception_v3 import InceptionV3
base_model = InceptionV3(weights='imagenet', include_top='False')
x = base_model.output
x = GlobalAveragePooling2D()(x) # Error appears here
x = Dense(1024, activation='relu')(x)
predictions = Dense(3, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)
解决方案
原因是您将字符串 'False'
传递给include_top
. 非空字符串的计算结果为True
,因此您认为的无上装模型实际上完全装饰有降维平均池和全连接层。
因此,解决您的问题的一种方法是更改'False'
为False
. 但是,我要补充一点,您可以只指定pooling='avg'
,因此您只需添加最后Dense
一层...
推荐阅读
- c# - C# boolean Value 总是返回 false 但在数据库中为 true
- xamarin - 如何在 Xamarin.Form 应用程序中使用 text 属性为项目中的所有控件全局设置 FontFamily?
- jquery - 在 JQuery 中将动态数据设置为动态创建的表
- regex - 正则表达式如何解析字符串中的键值对?
- java - 扫描仪安全读取用户输入
- sql - MS Access SQL删除基于外部表的记录
- python - 在 excel 中创建新工作表并使用 openpyxl 写入数据
- vue.js - 是否可以通过 Netlify CMS 后端动态地将页面添加到 Vuepress 站点?
- javascript - 检测是jQuery中父级底部的子容器
- sql - 在 1=1 处使用 SQL