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]这种形式

最初的矩阵是这样的,维度是[2, 4, 4]

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_new = tf.reshape(a, [1, 4, 4, 2])

经过reshape操作后,变成下面这样,作为输入,矩阵的含义为 (batch_size, height, width, channels),这里的channel数为2,所以有两个通道,红色代表channel 1,蓝色代表channel 2。

pooling=tf.nn.max_pool(a_new,[1,2,2,1],[1,1,1,1],padding='VALID')pooling = tf.nn.max_pool(   h,   ksize=[1, height, width, 1],  strides=[1, 1, 1, 1],  padding='VALID',name="pool")

h : 需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch_size, height, width, channels]这样的shape
k_size : 池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1
strides : 窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]
padding: 填充的方法,SAME或VALID,SAME表示添加全0填充,VALID表示不添加
这里的k_size 维度是[1, 2, 2, 1],形状如下

用k_size 分别遍历a_new的两个channel

 首先,对第一个channel的第一列和第二列的前两行进行max_pool,得到最大值为8,然后对第二个channel的第一列和第二列的前两行进行max_pool,得到最大值为7,遍历完前两行后, 接着对第一个channel的第一列和第二列的中间两行进行max_pool,的搭配最大值为6,这样依次遍历下去,最终得到的结果是

max_pool操作中的维度变化
h = [batch_size, height_1, width_1, channels]
ksize = [1, height_2, width_2, 1]

最终得到的pool的shape为
[batch_size, height_1-height_2+1, width_1-width_2+1,channels]

参考:

https://blog.csdn.net/m0_37586991/article/details/84575325

max pooling相关推荐

  1. 对Max Pooling的理解

    Max Pooling是什么 在卷积后还会有一个 pooling 的操作. max pooling 的操作如下图所示:整个图片被不重叠的分割成若干个同样大小的小块(pooling size).每个小块 ...

  2. 自然语言处理中CNN模型几种常见的Max Pooling操作

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 (想更系统地学习深度学习知识?请参考:深度学习枕边书) CNN是目前自然语言处理中和RNN并驾齐驱的两 ...

  3. CNNs中,什么是max pooling, 为什么需要max pooling

    max pooling是发生在卷积层与池化层的一种图片压缩方法. 而卷积层和池化层是CNNs中最重要的两部分,因为有卷积层, 所以叫做卷积神经网络. 假设一张2d, 一层的图片, 大小为4 * 4, ...

  4. CNN max pooling、Relu、round 等环节梯度如何反传?

    神经网络中,一个小的trick有可能让网络performance变得非常好.对于神经网络的理解,我们不应该停留在对于pytorch.tf等的依赖上,他们经常性的考虑到了我们可能出错的地方,并进行了修正 ...

  5. 【阅读笔记】Why Discard if You can Recycle?: A Recycling Max Pooling Module for 3D Point Cloud Analysis

    Why Discard if You can Recycle?:A Recycling Max Pooling Module for 3D Point Cloud Analysis 如果可以回收,为什 ...

  6. 人脸识别---Gabor特征(mean pooling和max pooling)

    Abstract-本文主要讲解Gabor特征在人脸识别中的使用.       在此不讲Gabor滤波器的原理,网上有很多博客已经介绍了大量关于Gabor滤波器.此文讲下提取出来后的Gabor滤波器的处 ...

  7. 【CV】图像分类中的max pooling和average pooling区别

    卷积神经网络中,经常采用池化操作,一般都会在卷积层后面接一个池化操作.近些年,比较主流的ImageNet的分类算法模型都是使用max pooling,很少使用average Pooling,这对我们平 ...

  8. Global Average Pooling与FC、Global Max Pooling的比较

    原文 Global Average Pooling(简称GAP,全局池化层)技术最早提出是在这篇论文(第3.2节)中,被认为是可以替代全连接层的一种新技术.在keras发布的经典模型中,可以看到不少模 ...

  9. 深度学习:使用卷积网络实现计算机图像识别,卷积和max pooling操作介绍

    深度学习在计算机图像识别上的应用非常成功.利用深度学习,我们能够对图片进行高精度识别,实现这一功能的,主要依靠神经网络中的一种分支,名为卷积网络.卷积网络与我们前面实现的网络不通之处在于,它可以直接接 ...

最新文章

  1. python字典可以切片吗_7.map(感觉跟python中的字典有点像)数组,切片(make)傻傻分不清楚,多多指点...
  2. 深度学习caffe的代码怎么读?
  3. 攻防世界Reverse第七题simple-unpack
  4. k8s pod重启策略:Always、OnFailure、Never配置示例
  5. 阿帕奇跨域_阿帕奇光束
  6. 关于iOS7里的JavaScriptCore framework
  7. 7 个顶级的 HTML5 Canvas 动画赏析
  8. 如何更新Node.js?
  9. JZOJ5857. 【NOIP提高组模拟A组2018.9.8】没有上司的舞会
  10. python+appium+android模拟器自动化测试 源码
  11. Xcode14 build WebDriverAgent提示“Cannot link directly with dylib/framework“的解决方法
  12. 架构师工程攻城略地需要具备的八大核心能力
  13. bluehost虚拟主机有什么用?适合做什么网站呢?
  14. Fintech系列(八) -- 游戏驿站GME股价暴涨事件中的杠杆工具和轧空现象
  15. 重大问题,Windows11出现重大BUG(开始菜单掉帧,卡顿)
  16. Ionic3 Ios 热更新
  17. 云计算提供商锁定的影响以及解决方案
  18. 如何使用 Python 对 Excel 截图
  19. 使用antlr4及java实现snl语言的解释器
  20. 加强云上探索与实践,筑牢数字经济发展之根

热门文章

  1. 论“结婚生孩子要趁早”,否则真正的是“上有老下小”
  2. 使用css修改input框中checkbox的样式
  3. 人大进仓v8r3安装
  4. IOE和阿里云工作原理图示
  5. CVPR2022 | 开源:基于间距自适应查找表的实时图像增强方法
  6. 纯JS+CSS3制作星星海背景特效
  7. 联想(lenovo) IdeaCentre GeekPro-15ICK主机设置USB启动
  8. 几行代码实现简单的网络象棋游戏,看看Java大牛是怎么做到的?
  9. 《Python核心编程》第三版 读书笔记
  10. 作为初学者如何学会调弦呢?