【问题标题】:How to get pool3 features of Inception v3 model using Keras?如何使用 Keras 获取 Inception v3 模型的 pool3 功能?
【发布时间】:2016-08-19 15:55:45
【问题描述】:

使用 Tensorflow,我得到一个 2048 维向量作为 pool3 层的输出。但是,使用 Keras 的 include_top=False 会给出 8,8,2048 维向量。如何获得与使用 TensorFlow 的 pool3 输出层相同的向量?

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    让我们看看 TensorBoard 中的pool_3 层。

    看来Keras返回的层实际上是mixed_10层的输出。

    为了获得pool_3 的 2048-D 特征向量,Inception v3 附加了一个平均池化层。 由于它使用了一个 8x8 的过滤器,这是对前两个轴的简单平均操作,因此我们可以使用 NumPy 获得这个向量,如下所示:

    pooled_vector = numpy.mean(unpooled_vector, axis=(0,1))

    其中pooled_vector 是 2048-D 向量,unpooled_vector 是您的 8x8x2048 向量。

    【讨论】:

    • 嗨,还是不一样。尺寸匹配,但值不同。而且由于某种原因,Keras 生成的数组中的所有值都是负数。
    • 我的错,我认为这些值不会相同,因为对于 Inception,原始权重与 Tensorflow 发布的不同..
    • 你好,根据这个博客,你应该在加载inception模型时直接设置pooling='avg':machinelearningmastery.com/…model = InceptionV3(include_top=False, pooling='avg', input_shape=(299,299,3))
    【解决方案2】:
    encode_model = InceptionV3(weights='imagenet')
    encode_model = Model(encode_model.input, encode_model.layers[-2].output)
    

    【讨论】:

    • 欢迎来到 Stack Overflow!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2019-07-14
    • 2018-02-01
    • 2016-12-22
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    相关资源
    最近更新 更多