max pooling是CNN当中的最大值池化操作
tf.nn.max_pool(value, ksize, strides, padding, name=None)
参数和卷积类似:
value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape
ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1
strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]
padding:和卷积类似,可以取'VALID' 或者'SAME'
返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式
name:指定该操作的name
import tensorflow as tf
a = tf.constant([[
[[1., 17.],
[2., 18.],
[3., 19.],
[4., 20.]],
[[5., 21.],
[6., 22.],
[7., 23.],
[8., 24.]],
[[9., 25.],
[10., 26.],
[11., 27.],
[12., 28.]],
[[13., 29.],
[14., 30.],
[15., 31.],
[16., 32.]]
]])
pooling = tf.nn.max_pool(a, [1, 2, 2, 1], [1, 1, 1, 1], padding='VALID')
with tf.Session() as sess:
print(sess.run(pooling))
# [[[[ 6. 22.]
# [ 7. 23.]
# [ 8. 24.]]
# [[10. 26.]
# [11. 27.]
# [12. 28.]]
# [[14. 30.]
# [15. 31.]
# [16. 32.]]]]
评论列表(0条)