一、池化的好处及具体操作
1、使用池化函数的好处
大大降低特征的维数,避免过拟合
- 可去
除一些冗余信息
,得到一个低分辨率的特征图 - 使得模型更关注是否存在某些特征而不是特征的具体位置,可以容忍一些
特征微小的位移
2、具体操作
对输入数据体的每一个深度切片进行操作(深度保持不变
)
常用尺寸为 2∗2 或 3∗3 的滤波器,步长为 22
二、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' 或 SAME,和卷积中的 padding 规则相同
输出:
池化降维后的 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 的提取及数据的视角