【问题标题】:Why is the fully connected layer + category outputs missing from tensorflow's pre-trained mobilenet v2?为什么 tensorflow 的预训练 mobilenet v2 缺少全连接层 + 类别输出?
【发布时间】:2021-09-08 07:22:06
【问题描述】:

我正在尝试使用 tensorflow 的 MobileNet v2。 我不明白为什么,但似乎最后一个完全连接的层,输出类别(维度 1000)层丢失了,我只剩下一些卷积层之后的嵌入。

知道为什么会这样吗?如何添加,或者在哪里可以找到预训练的全连接层块?

代码如下:

image = np.array(PIL.Image.open("amsterdam.jpg"))
image = np.expand_dims(image,0)
IMG_SIZE = image.shape[1:3]
IMG_SHAPE = IMG_SIZE + (3,)
base_model = tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE,
                                               include_top=False,
                                               weights='imagenet')
tf.keras.utils.plot_model(base_model,to_file='model.png', show_shapes=True)

在这里你可以看到我用tf.keras.utils.plot_model绘制的神经网络结构:

知道如何解决这个问题吗?

【问题讨论】:

  • 向下滚动到这里大约需要 5 分钟。如果您的图片太大,请提供链接。
  • 设置include_top=True而不是Flase。
  • 谢谢@Kaveh,这确实是问题所在!

标签: python tensorflow neural-network conv-neural-network mobilenet


【解决方案1】:
  • include_top=False:返回没有密集层的模型进行分类。您可以添加自己的密集层。
  • include_top=True:返回整个模型。

如果您还想获得密集层进行分类,请使用include_top=True 作为默认值。当您设置include_top=False 时,模型不会返回密集层,以便您制作自己的密集层并进行自己的分类以满足您的需求。

【讨论】:

    猜你喜欢
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2016-03-14
    • 2020-05-29
    • 2020-12-11
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多