我想使用在ImageNet上预训练的MobileNet模型进行特征提取。我正在加载模型如下:
from keras.applications.mobilenet import MobileNet
feature_model = MobileNet(include_top=False, weights='imagenet', input_shape=(200, 200, 3))
Keras手册clearly says表示此输入形状有效:
input_shape:可选的形状元组,仅在include_top为False时指定(否则输入形状必须为(224,224,3)(带有'channels_last'数据格式)或(3,224,224)(带'channels_first')数据格式)。它应该有3个输入通道,宽度和高度不应小于32.例如(200,200,3)将是一个有效值。
但是,我收到以下错误消息:
ValueError:如果正在加载imagenet权重,则输入必须具有静态方形((128,128),(160,160),(192,192)或(224,224)之一)。提供的输入形状=(200,200,3)
如果我指定include_top=False
,为什么它需要输入形状与它训练的那个相匹配?
硬:2.2.4,TensorFlow:1.13.1
更新:正如@Soroush所指出的,这个例外被删除了recently。然而,正如here所描述的那样,问题没有完全解决。
这个例外是错误的,最近(2019年3月29日)从Keras中删除(参见GitHub上的issue和pull request)。截至2019年4月8日,此提交尚未发布,因此您必须从master
安装。
要在MobileNet中使用自定义图像大小,请从以下链接下载权重:qazxsw poi
但是根据https://github.com/fchollet/deep-learning-models/releases/tag/v0.6的研究论文,确保你需要哪些权重,因为它包含不同的权重文件,因为每个模型都依赖于参数MobileNet和alpha
。 depth_multiplier
有四个不同的值:0.25,0.50,0.75,1.0。此外,根据alpha
的实施,depth_multiplier
是1。我建议你下载mobilenet。根据mobilenet_1_0_224_tf.h5
,它具有最高的ImageNet准确度。
之后,
research paper Table 7
你很高兴去。