tf.nn.max_pool(value, ksize, strides, padding, name=None)

参数是四个,和卷积很类似:

  • 参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是 feature map ,是[batch, height, width, channels] 这样的 shape
  • 参数 ksize:池化窗口的大小,取一个四维向量,一般是 [1, height, width, 1],因为我们不想在 batchchannels 上做池化,所以这两个维度设为了1
  • 参数 strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是 [1, stride,stride, 1]
  • 参数 padding:和卷积类似,可以取 'VALID' 或者 'SAME'

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

示例:

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

通道1:

通道2:

可以想象把这两个通道叠在一起,数字 1 后跟的数字是 2,然后是 3 然后是 4…
这样的图片在数组中的表示就是:

[[[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]]]

因为 max_pool 中输入的 value 是 4 维的,因此将这样一个 shape2x2x4 的数组 reshape1x4x4x2

[[[[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.]]]]

经过 max_pool,池化大小为 2x2,步长为 1,方式是 Valid :

pooling = tf.nn.max_pool(a,[1,2,2,1],[1,1,1,1],padding='VALID')

得到池化结果:

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

因此池化后的图就是:

也可改变 max_pool 中的 步长和池化方法:

pooling = tf.nn.max_pool(a,[1,2,2,1],[1,2,1,1],padding='SAME')

得出结果:

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

完整代码:

import tensorflow as tf
import numpy as npa=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,2,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)

Referene:

https://blog.csdn.net/mao_xiao_feng/article/details/53453926

tf.nn.max_pool 理解相关推荐

  1. tensorflow详解-tf.nn.conv2d(),tf.nn.max_pool()

    tf.nn.conv2d() 函数来计算卷积,weights 作为滤波器,[1, 2, 2, 1] 作为 strides.TensorFlow 对每一个 input 维度使用一个单独的 stride ...

  2. tf.nn.conv2d理解(带通道的卷积图片输出案例)

    三篇参考: 1.https://blog.csdn.net/goodshot/article/details/79655915 TF-卷积函数 tf.nn.conv2d 介绍 2.https://bl ...

  3. 【TensorFlow】TensorFlow函数精讲之tf.nn.max_pool()和tf.nn.avg_pool()

    tf.nn.max_pool()和tf.nn.avg_pool()是TensorFlow中实现最大池化和平均池化的函数,在卷积神经网络中比较核心的方法. 有些和卷积很相似,可以参考TensorFlow ...

  4. TensorFlow基础篇(六)——tf.nn.max_pool()和tf.nn.avg_pool()

    tf.nn.max_pool()和tf.nn.avg_pool()是TensorFlow中实现最大池化和平均池化的函数,在卷积神经网络中比较核心的方法. 有些和卷积很相似,可以参考TensorFlow ...

  5. tf.nn 和tf.layers以及tf.contrib.layers的简单区别(转)

    tensorflow不同层的使用(tf.nn 和tf.layers以及tf.contrib.layers)的简单区别(转) 2018年09月02日 18:50:33 holmes_MX 版权声明:原创 ...

  6. tensorflow学习(一)——有关tensorflow不同层的使用(tf.nn 和tf.layers以及tf.contrib.layers)的简单区别

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/holmes_MX/article/de ...

  7. tf.nn,tf.layers, tf.contrib模块介绍

    一.tf.nn,tf.layers, tf.contrib概述 我们在使用tensorflow时,会发现tf.nn,tf.layers, tf.contrib模块有很多功能是重复的,尤其是卷积操作,在 ...

  8. 深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)...

    1. tf.nn.embedding_lookup(W, X) W的维度为[len(vocabulary_list), 128], X的维度为[?, 8],组合后的维度为[?, 8, 128] 代码说 ...

  9. TensorFlow(七)tf.nn库

    ##tf.nn,tf.layers, tf.contrib模块有很多功能是重复的 下面是对三个模块的简述: tf.nn :提供神经网络相关操作的支持,包括卷积操作(conv).池化操作(pooling ...

最新文章

  1. 你要的2019最全目标检测都在这里啦!
  2. 最新开源Faster-LIO:快速激光IMU里程计
  3. python能不能爬数据库_python如何爬数据库
  4. 如何压缩神经网络(将已经训练好的压缩)
  5. 【Python3爬虫】最新的12306爬虫
  6. js中window.location.search的用法和作用
  7. Tushare数据的绘图操作
  8. 消息中间件常见问题汇总
  9. Java基础知识之方法的返回值与重载
  10. [Topic]Advanced Run Time Type Identification in C++
  11. Ubuntu系统上为用户授予和删除sudo权限的方法
  12. Neo4j-import导入CSV的数据
  13. 2019最新猎豹网校JAVA语言数据结构与算法教程(Java语言 )
  14. Echarts教程1_ ECharts官方教程(一)【5分钟上手ECharts】
  15. CTSC1999补丁VS错误题解
  16. epoll使用详解:epoll_create、epoll_ctl、epoll_wait、close
  17. R语言回归分析-回归诊断
  18. 利用python进行单边T检验
  19. Python(正则表达式)
  20. 码住收藏 ▏软件测试报告应该包含哪些内容?

热门文章

  1. 懒人的懒方法之-回车跳转大法
  2. 版权和许可协议的学习
  3. Logback也爆漏洞了,总结下最近log相关的几个漏洞
  4. 一文探讨堆外内存的监控与回收
  5. 一文带你彻底了解Java异步
  6. 从 MySQL 执行原理告诉你:为什么分页场景下,请求速度非常慢?
  7. 这组动画完美演绎了一个程序员从接手新项目到交货的复杂心情
  8. 关于Jvm知识看这一篇就够了
  9. 听客来团队scrum敏捷开发工具实践分享
  10. 从根因入手,更有效率,效果也更好