一、池化的好处及具体操作
1、使用池化函数的好处
- 大大降低特征的维数,避免过拟合
- 可去除一些冗余信息,得到一个低分辨率的特征图
2、具体操作
- 对输入数据体的每一个深度切片进行操作(深度保持不变)
- 常用尺寸为
2∗2 或3∗3 的滤波器,步长为2
3、常用池化操作
二、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 上做池化,所以这两个维度设为了1strides: 窗口在每一个维度上滑动的步长,形状为
[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 的提取及数据的视角
五、参考资料
1、https://www.tensorflow.org/api_docs/python/tf/nn/max_pool
2、https://cs231n.github.io/convolutional-networks/
3、CNN的近期进展与实用技巧(上)