一 池化函数说明
1 语法格式
tf.nn.max_pool(input,ksize,strides,padding,name=None)
tf.nn.avg
_pool(input,ksize,strides,padding,name=None)
2 参数说明
input:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch,height,width,channels]这样的shape。
ksize:池化窗口的大小,取一个四维向量,一般是[1,height,width,1],因为我们不想在batch和channels上做池化,所以这两个维度设为1.
strides:和卷积参数含义类似,窗口在每一个维度上滑动的步长,一般也是[1,stride,stride,1
].
padding:和卷积参数含义一样,也是取VALID或者SAME,VALID是不padding操作,SAME是padding操作。
3 返回值
返回一个Tensor,类型不变,shape仍然是[batch,height,width,channels]这种形式。
二 池化函数使用
1 实例描述
通过手动生成一个4*4的矩阵来模拟图片,定义一个2*2的滤波器,通过几个在卷积神经网络中常用的池化操作来测试池化函数里的参数,并验证输出结果。
2 代码
'''
定义输入变量
定义1个输入变量用来模拟输入图片,4*4大小的2通道矩阵,并将其赋予指定的值。2个通道分别为:0 0 0 0到3 3 3 3组成的矩阵,4 4 4 4 到 7 7 7 7组成的矩阵。
'''
import tensorflow as tf
img=tf.constant([
[[0.0,4.0],[0.0,4.0],[0.0,4.0],[0.0,4.0]],
[[1.0,5.0],[1.0,5.0],[1.0,5.0],[1.0,5.0]],
[[2.0,6.0],[2.0,6.0],[2.0,6.0],[2.0,6.0]],
[[3.0,7.0],[3.0,7.0], [3.0,7.0],[3.0,7.0]]
])
img=tf.reshape(im