【问题标题】:Global Average Pooling from Array数组的全局平均池化
【发布时间】:2018-03-03 03:43:19
【问题描述】:

我正在使用 Keras 的 InceptionV3 模型来提取特征。假设我有 1000 张图像,我得到了形状为(1000, 8, 8, 2048) 的最后一层。其中1000 来自数据大小,(8, 8, 2048) 来自最后一个卷积层。如何实现全局平均池化?我期待的形状是(1000, 1, 1, 2048)

【问题讨论】:

  • 你能发一个最小的代码让我先看看吗?
  • @Nain 我试图从skimage.measure import block_reduce 导入并执行block_reduce(X_train_feature, (1, 8, 8, 1), np.mean)。结果形状如我所料。我不确定,但我希望这是一个 GAP。

标签: python numpy keras scikit-image keras-layer


【解决方案1】:
>>> import numpy as np
>>> X.shape
    (1000, 8, 8, 2048)
>>> X_gap = np.apply_over_axes(np.mean, X, [1, 2])
>>> X_gap.shape
    (1000, 1, 1, 2048)

【讨论】:

    【解决方案2】:

    使用GlobalAveragePooling2D 进行平均池化或使用GlobalMaxPooling2D 进行最大池化:

    model = Sequential()
    model.add(InputLayer(input_shape=(8, 8, 2048)))
    model.add(GlobalAveragePooling2D())
    model.summary()
    

    它将特征图全局压缩为一个值,因此输出形状为(batch_size, 2048)

    Layer (type)                 Output Shape              Param #   
    =================================================================
    input_1 (InputLayer)         (None, 8, 8, 2048)        0         
    _________________________________________________________________
    global_average_pooling2d_1 ( (None, 2048)              0         
    =================================================================
    

    如果您希望专门输出 4 秩张量,只需应用 K.expand_dims 将其扩展为 (batch_size, 1, 1, 2048)

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 2020-09-05
      • 2020-02-29
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      相关资源
      最近更新 更多