摘要:池化层的主要目的是降维,通过滤波器映射区域内取最大值、平均值等操作。

均值池化:tf.nn.avg_pool(input,ksize,strides,padding)

最大池化:tf.nn.max_pool(input,ksize,strides,padding)

input:通常情况下是卷积层输出的featuremap,shape=[batch,height,width,channels]

   CNN之池化层tf.nn.max_pool | tf.nn.avg_pool | tf.reduce_mean | padding的规则解释              CNN之池化层tf.nn.max_pool | tf.nn.avg_pool | tf.reduce_mean | padding的规则解释

  假定这个矩阵就是卷积层输出的featuremap(2通道输出)  他的shape=[1,4,4,2]

ksize:池化窗口大小    shape=[batch,height,width,channels]    比如[1,2,2,1]

strides: 窗口在每一个维度上的移动步长 shape=[batch,stride,stride,channel]  比如[1,2,2,1]

padding:“VALID”不填充  “SAME”填充0

返回:tensor        shape=[batch,height,width,channels]

CNN之池化层tf.nn.max_pool | tf.nn.avg_pool | tf.reduce_mean | padding的规则解释

上图是采用的最大池化,取红色框内最大的一个数。

import tensorflow as tf
feature_map = 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]]
    ])
feature_map = tf.reshape(feature_map,[1,4,4,2])##两通道featuremap输入

##定义池化层
pooling = tf.nn.max_pool(feature_map,[1,2,2,1],[1,2,2,1],padding='VALID')##池化窗口2*2,高宽方向步长都为2,不填充
pooling1 = tf.nn.max_pool(feature_map,[1,2,2,1],[1,1,1,1],padding='VALID')##池化窗口2*2,高宽方向步长都为1,不填充
pooling2 = tf.nn.avg_pool(feature_map,[1,4,4,1],[1,1,1,1],padding='SAME')##池化窗口4*4,高宽方向步长都为1,填充
pooling3 = tf.nn.avg_pool(feature_map,[1,4,4,1],[1,4,4,1],padding='SAME')##池化窗口4*4,高宽方向步长都为4,填充
##转置变形(详细解释参考另一篇博文)
tran_reshape = tf.reshape(tf.transpose(feature_map),[-1,16])
pooling4 = tf.reduce_mean(tran_reshape,1)    ###对行值求平均
with tf.Session() as sess:
    print('featuremap:\n',sess.run(feature_map))
    print('*'*30)
    print('pooling:\n',sess.run(pooling))
    print('*'*30)
    print('pooling1:\n',sess.run(pooling1))
    print('*'*30)
    print('pooling2:\n',sess.run(pooling2))
    print('*'*30)
    print('pooling3:\n',sess.run(pooling3))
    print('*'*30)
    print('pooling4:\n',sess.run(pooling4))
'''
输出结果:
featuremap:
 [[[[ 0.  4.]
   [ 0.  4.]
   [ 0.  4.]
   [ 0.  4.]]

  [[ 1.  5.]
   [ 1.  5.]
   [ 1.  5.]
   [ 1.  5.]]

  [[ 2.  6.]
   [ 2.  6.]
   [ 2.  6.]
   [ 2.  6.]]

  [[ 3.  7.]
   [ 3.  7.]
   [ 3.  7.]
   [ 3.  7.]]]]
******************************
pooling:
 [[[[ 1.  5.]
   [ 1.  5.]]

  [[ 3.  7.]
   [ 3.  7.]]]]
******************************
pooling1:
 [[[[ 1.  5.]
   [ 1.  5.]
   [ 1.  5.]]

  [[ 2.  6.]
   [ 2.  6.]
   [ 2.  6.]]

  [[ 3.  7.]
   [ 3.  7.]
   [ 3.  7.]]]]
******************************
pooling2:
 [[[[ 1.   5. ]
   [ 1.   5. ]
   [ 1.   5. ]
   [ 1.   5. ]]

  [[ 1.5  5.5]
   [ 1.5  5.5]
   [ 1.5  5.5]
   [ 1.5  5.5]]

  [[ 2.   6. ]
   [ 2.   6. ]
   [ 2.   6. ]
   [ 2.   6. ]]

  [[ 2.5  6.5]
   [ 2.5  6.5]
   [ 2.5  6.5]
   [ 2.5  6.5]]]]
******************************
pooling3:
 [[[[ 1.5  5.5]]]]
******************************
pooling4:
 [ 1.5  5.5]

'''
池化层常用函数及参数

相关文章:

  • 2022-12-23
  • 2021-11-27
  • 2022-12-23
  • 2021-09-14
  • 2021-12-17
  • 2021-11-22
  • 2021-12-11
  • 2021-08-25
猜你喜欢
  • 2022-12-23
  • 2021-07-19
  • 2022-12-23
  • 2021-08-04
  • 2021-09-26
  • 2022-12-23
  • 2021-08-06
相关资源
相似解决方案