Tensorflow利用tf.nn.max_pool()函数实现最大池化操作。
函数原型
pooling = tf.nn.max_pool(
h,
ksize=[1, height, width, 1],
strides=[1, 1, 1, 1],
padding='VALID',
name="pool")
h : 需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch_size, height, width, channels]这样的shape
k_size : 池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1
strides : 窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]
padding: 填充的方法,SAME或VALID,SAME表示添加全0填充,VALID表示不添加
这里的k_size 维度是[1, 2, 2, 1],形状如下
用k_size 分别遍历a_new的两个channel
首先,对第一个channel的第一列和第二列的前两行进行max_pool,得到最大值为8,然后对第二个channel的第一列和第二列的前两行进行max_pool,得到最大值为7,遍历完前两行后, 接着对第一个channel的第一列和第二列的中间两行进行max_pool,的搭配最大值为6,这样依次遍历下去,最终得到的结果是
max_pool操作中的维度变化
h = [batch_size, height_1, width_1, channels]
ksize = [1, height_2, width_2, 1]
最终得到的pool的shape为
[batch_size, height_1-height_2+1, width_1-width_2+1,channels]
本文整理转载自其它博文,如有侵权,请联系364017364@qq.com删除。