TensorFLow 中的池化函数

时间:2021-11-21 13:51:12

一、池化的好处及具体操作

1、使用池化函数的好处

  • 大大降低特征的维数,避免过拟合
  • 可去除一些冗余信息,得到一个低分辨率的特征图

2、具体操作

  • 对输入数据体的每一个深度切片进行操作(深度保持不变)
  • 常用尺寸为 22 33 的滤波器,步长为 2

3、常用池化操作

TensorFLow 中的池化函数
TensorFLow 中的池化函数


二、Max Pooling:计算池化区域中元素的最大值

tf.nn.max_pool(value, ksize, strides, padding, data_format='NHWC', name=None)

输入参数:

  • value: 一般为卷积后的 feature map,形状为[batch, height, width, channels] ,数据类型为 tf.float32

  • ksize: 池化窗口的大小,形状为[1, height, weight, 1],因为我们不想在batch 和 channels 上做池化,所以这两个维度设为了1

  • strides: 窗口在每一个维度上滑动的步长,形状为[1, stride, stride, 1]

  • padding:一般为 'VALID' 模式

输出:

  • 池化降维后的 feature map,数据类型为 tf.float32

三、Average Pooling:计算池化区域中元素的平均值

tf.nn.max_pool(value, ksize, strides, padding, data_format='NHWC', name=None)

输入参数:

  • 仅有输入 value 的数据类型比最大池化多了点,其它都一样
  • value: 一般为卷积后的 feature map,形状为[batch, height, width, channels] ,数据类型为 float32, float64, qint8, quint8, or qint32

输出:

  • 池化降维后的 feature map,数据类型为和 value 保持一致

四、代码示例

  • 注意 feature map 的提取及数据的视角

TensorFLow 中的池化函数


五、参考资料

1、https://www.tensorflow.org/api_docs/python/tf/nn/max_pool
2、https://cs231n.github.io/convolutional-networks/
3、CNN的近期进展与实用技巧(上)