1、最大池化

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'

  VALID:边缘不用0填充

  SAME:边缘用0填充

返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式

2、实现

示例源码:

假设有这样一张图,双通道

第一个通道:

第二个通道:

用程序去做最大值池化:

import tensorflow as tf  

a=tf.constant([
[[1.0,2.0,3.0,4.0],
[5.0,6.0,7.0,8.0],
[8.0,7.0,6.0,5.0],
[4.0,3.0,2.0,1.0]],
[[4.0,3.0,2.0,1.0],
[8.0,7.0,6.0,5.0],
[1.0,2.0,3.0,4.0],
[5.0,6.0,7.0,8.0]]
]) a=tf.reshape(a,[1,4,4,2]) pooling=tf.nn.max_pool(a,[1,2,2,1],[1,1,1,1],padding='VALID')
with tf.Session() as sess:
print("image:")
image=sess.run(a)
print (image)
print("reslut:")
result=sess.run(pooling)
print (result)

输出结果:

image:

[[[[ 1.  2.]

[ 3.  4.]

[ 5.  6.]

[ 7.  8.]]

[[ 8.  7.]

[ 6.  5.]

[ 4.  3.]

[ 2.  1.]]

[[ 4.  3.]

[ 2.  1.]

[ 8.  7.]

[ 6.  5.]]

[[ 1.  2.]

[ 3.  4.]

[ 5.  6.]

[ 7.  8.]]]]

reslut:

[[[[ 8.  7.]

[ 6.  6.]

[ 7.  8.]]

[[ 8.  7.]

[ 8.  7.]

[ 8.  7.]]

[[ 4.  4.]

[ 8.  7.]

[ 8.  8.]]]]

import tensorflow as tf

a = tf.constant([
[[1.0, 2.0, 3.0, 4.0],
[5.0, 6.0, 7.0, 8.0],
[8.0, 7.0, 6.0, 5.0],
[4.0, 3.0, 2.0, 1.0]],
[[4.0, 3.0, 2.0, 1.0],
[8.0, 7.0, 6.0, 5.0],
[1.0, 2.0, 3.0, 4.0],
[5.0, 6.0, 7.0, 8.0]]
]) a = tf.reshape(a, [1, 4, 4, 2]) pooling = tf.nn.max_pool(a, [1, 2, 2, 1], [1, 1, 1, 1], padding='SAME')
with tf.Session() as sess:
print("image:")
image = sess.run(a)
print(image)
print("reslut:")
result = sess.run(pooling)
print(result)

输出结果:

image:
[[[[ 1. 2.]
[ 3. 4.]
[ 5. 6.]
[ 7. 8.]]

[[ 8. 7.]
[ 6. 5.]
[ 4. 3.]
[ 2. 1.]]

[[ 4. 3.]
[ 2. 1.]
[ 8. 7.]
[ 6. 5.]]

[[ 1. 2.]
[ 3. 4.]
[ 5. 6.]
[ 7. 8.]]]]
reslut:
[[[[ 8. 7.]
[ 6. 6.]
[ 7. 8.]
[ 7. 8.]]

[[ 8. 7.]
[ 8. 7.]
[ 8. 7.]
[ 6. 5.]]

[[ 4. 4.]
[ 8. 7.]
[ 8. 8.]
[ 7. 8.]]

[[ 3. 4.]
[ 5. 6.]
[ 7. 8.]
[ 7. 8.]]]]

平均池化avg_pool 用法与max_pool一致

最新文章

  1. 关于pc端直播
  2. spring 4 @RestController 小试
  3. 选择c3p0作为连接池
  4. css3渐变色彩
  5. mysql主从复制的一篇文章(转载)
  6. Oracle数据库——数据库安全性管理
  7. Linux重置mysql密码(转载)
  8. java惯用法转载
  9. setWillNotDraw和setFillViewport
  10. 好大滴坑, Spring MVC覆盖了Trsaction
  11. 机器学习之KNN原理与代码实现
  12. cocos creator 动态创建精灵
  13. 如何设置openwrt在编译linux内核时不优化内核?
  14. time模块的使用
  15. linux下apt安装mysql导致mysql.user table is damaged
  16. NOIP2018ty记
  17. Nginx日常报错处理总结
  18. 终于用ADB连上平板了
  19. 关于一道面试题,使用C#实现字符串反转算法
  20. Luogu 4245 【模板】任意模数NTT

热门文章

  1. sock
  2. sublime 新手代码提示
  3. javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)
  4. Python函数之简单总结
  5. Mybatis配置(一)
  6. SQL储存过程
  7. vue-resource promise兼容性问题
  8. GitHub:多人协作下的分支处理
  9. jrebel配置热部署参数
  10. [编织消息框架][netty源码分析]11 UnpooledHeapByteBuf 与 ByteBufAllocator