使用预先训练的Inceptionv3的Keras问题

时间:2019-06-25 11:14:49

标签: python tensorflow keras

我在Keras中将InceptionV3与imagenet权重一起使用。我正在使用的Keras版本是2.2.4,而Keras-applications是1.0.8。张量流版本为1.14.0。我遵循使用here概述的使用InceptionV3进行迁移学习的标准方法。我收到此错误ValueError: Input 0 is incompatible with layer global_average_pooling2d_3: expected ndim=4, found ndim=2。我发现了一个GitHub post,用户在其中遇到了同样的问题。我遵循了在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)

1 个答案:

答案 0 :(得分:2)

原因是您将 string :website_slug传递给'False'。非空字符串的求值为include_top,因此您认为的裸照模型实际上与降低维数的平均池和完全连接的层完全匹配。

因此,解决问题的一种方法是将True更改为'False'。但是,我要添加的是,您只需指定False,因此只需添加最后一个pooling='avg'层...