Keras: GlobalMaxPooling vs. MaxPooling

Keras: GlobalMaxPooling vs. MaxPooling

1D最大池化(1D Max Pooling)

# MaxPooling1D
keras.layers.MaxPooling1D(pool_size=2, strides=None, padding='valid', data_format='channels_last')

# GlobalMaxPooling1D
keras.layers.GlobalMaxPooling1D(data_format='channels_last')

顾名思义,Max Pooling是指在池化的窗口中选择最大值。可以看到,GlobalMaxPooling1D 和 MaxPooling1D相比少了三个参数,其实这三个参数描述的是一件事情: 池化时的窗口大小。

MaxPooling1D和GlobalMaxPooling1D示例

如上图所示,在1x1x5的网络上进行MaxPooling1D时,如果选择窗口大小为2,则面临两个问题:
1. 滑动窗口的步长选多少?(一般默认为pool_size
2. 如果在上图中步长选2,最后一行还要不要了?(图中选择valid,即不做padding, 放弃最后一行)

而对于GlobalMaxPooling1D来说,pool_size是固定的——就是最长那个维度(“全局”最大池化)。所以,步长不需要考虑——因为没有滑动空间了;因此,padding的问题也不存在了。

与此相应的,两种池化后结果的维度也不同:

MaxPooling1D和GlobalMaxPooling1D结果示例

 2D最大池化(2D Max Pooling)

  和1D时一样,有:

  

# MaxPooling2D
keras.layers.MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)

# GlobalMaxPooling2D
keras.layers.GlobalMaxPooling2D(data_format='channels_last')

 GlobalMaxPooling2D对全局做最大池化。

MaxPooling2D和GlobalMaxPooling2D结果示例

 3D最大池化(3D Max Pooling)

  就不写了,同理。

扫描二维码关注公众号,回复: 13104108 查看本文章

 应用场景

  NLP领域更常使用Global Max Pooling, 计算机视觉领域更常使用Max Pooling (非Global).

 概念迁移

  除了最大池化,Keras.layers还有平均池化(Average Pooling)—— 计算池化窗口中的平均值。使用时,把以上提到的Max全    部替换为Average就可以了。

  参考文献

    Keras官方文档

    What does GlobalMaxPooling1D() do to output of LSTM unit in Keras?

    What is the difference between Keras’ MaxPooling1D and GlobalMaxPooling1D functions?

    What is global max pooling layer and what is its advantage over maxpooling layer?

猜你喜欢

转载自blog.csdn.net/devil_son1234/article/details/107408356