深度学习中,有两种实现非线性的算子。一个是激活函数,另一个就是池化(pooling):

在知乎上面看到一个关于池化的神解释,摘来:

池化=涨水
卷积的目的是为了得到物体的边缘形状可以想象水要了解山立体的形状
水位低时得出山脚的形状
水位中等时得出山腰的形状
水位高时得出山顶的形状三点就可以大致描出山的简笔画池化的过程=升高水位(扩大矩阵网格)
卷积的过程是区分哪里是水,哪里是山

加上一点个人理解:

对于网络结构而言,上面的层看下面的层经过pooling后传上来的特征图,就好像在太空上俯瞰地球,看到的只有山脊和雪峰。这即是对特征进行宏观上的进一步抽象。

那么为什么需要 进行抽象 呢?

因为:经过池化后,得到的是 概要统计特征 。它们不仅 具有低得多的维度 (相比使用所有提取得到的特征),同时还会 改善结果(不容易过拟合)

max_pooling: 夜晚的地球俯瞰图,灯光耀眼的穿透性让人们只注意到最max的部分,产生亮光区域被放大的视觉错觉。故而 max_pooling 对较抽象一点的特征(如纹理)提取更好。

average_pooling: 白天的地球俯瞰图,幅员辽阔的地球表面,仿佛被经过了二次插值的缩小,所有看到的都是像素点取平均的结果。故而 average_pooling 对较形象的特征(如背景信息)保留更好。

BP

CNN中一些特殊环节的反向传播:

max_pooling的反向传播

把梯度直接传给前一层最max的像素,其余像素为0。

avg_pooling的反向传播

根据映射关系,把梯度均分成n份传给前一层。

Thinking

选用 max_pooling 还是 average_pooling ,要看需要识别的图像细节特征情况。知乎上说 二者差异不会超过 2% ,这个我深表质疑。

相比之下,个人感觉 max_pooling 是比 average_pooling 更抽象化的操作,因此可以抽象出更高级一点的特征。

由于pooling太过粗暴,操作复杂,目前业界已经逐渐放弃了对pooling的使用。替代方案 如下:

  • 采用 Global Pooling 以简化计算;

  • 增大conv的 stride 以免去附加的pooling操作。


[1] CNN中一些特殊环节的反向传播
[2] 深度学习cnn中,怎么理解图像进行池化(pooling)后的平移不变性?

【深度学习】池化 (pooling)相关推荐

  1. 深度学习——池化层理论学习(Pooling Layer)

    这里写目录标题 1. 什么是池化层 2. 池化层作用 3. 常见的池化层 3.1 最大池化层(max pooling layer) 3.2 平均池化层(average pooling layer) 3 ...

  2. [深度学习] 池化层函数及其逆过程函数

    池化函数 最大池化函数 一维 class torch.nn.MaxPool1d(kernel_size, stride=None, padding=0, dilation=1, return_indi ...

  3. (TIP-2020)带注意力的深度金字塔池化行人重识别

    带注意力的深度金字塔池化行人重识别 paper题目:Deep Pyramidal Pooling With Attention for Person Re-Identification paper于2 ...

  4. Stanford UFLDL教程 池化Pooling

    池化 Contents [hide] 1 池化: 概述 2 池化的不变性 3 形式化描述 4 中英文对照 5 中文译者 池化: 概述 在通过卷积获得了特征 (features) 之后,下一步我们希望利 ...

  5. 一文弄懂各大池化Pooling操作

    池化Pooling是卷积神经网络中常见的一种操作,Pooling层是模仿人的视觉系统对数据进行降维,其本质是降维.在卷积层之后,通过池化来降低卷积层输出的特征维度,减少网络参数和计算成本的同时,降低过 ...

  6. 卷积神经网络的卷积及池化(pooling)

    如何理解卷积神经网络中的卷积及池化(pooling) 1. 卷积 卷积层是用一个固定大小的矩形区去席卷原始数据,将原始数据分成一个个和卷积核大小相同的小块,然后将这些小块和卷积核相乘输出一个卷积值(注 ...

  7. 卷积神经网络中的池化(Pooling)层

    文章目录 卷积神经网络中的池化(Pooling)层 ⚪ 通用的池化方法 1. 最大池化 Max Pooling 2. 平均池化 Average Pooling 3. 混合池化 Mix Pooling ...

  8. [十七]深度学习Pytorch-优化器Optimizer

    0. 往期内容 [一]深度学习Pytorch-张量定义与张量创建 [二]深度学习Pytorch-张量的操作:拼接.切分.索引和变换 [三]深度学习Pytorch-张量数学运算 [四]深度学习Pytor ...

  9. 深度学习(二十七)可视化理解卷积神经网络(反池化 pooling unpooling)

    不明白pooling,unpooling以及upsampling的区别,所以查阅了一些资料 以下为转载原文 可视化理解卷积神经网络 原文地址:http://blog.csdn.net/hjimce/a ...

最新文章

  1. jQuery.fly插件实现添加购物车抛物线效果
  2. nginx 405 not allowed问题的解决
  3. poj 3461 Oulipo(kmp统计子串出现次数)
  4. 如何在 Mac 上设置和使用快捷方式?
  5. .Net 并发写入文件的多种方式
  6. 多个文件进行合并取前10个数(多线程方式)
  7. 将SpringBoot项目打包并部署到服务器
  8. 下载安装最新kali虚拟机及切换中文方法
  9. 使用Matlab绘制gif动图
  10. bzoj 3039 玉蟾宫 单调栈
  11. 互联网舆情系统的架构实践
  12. creo1复制粘贴指令
  13. docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
  14. 寒假水67——空心三角形
  15. 『每日AI』马化腾丨中国互联网已从C2C进化为KFC!
  16. NSSCTF web刷题
  17. 360浏览器查看服务器响应内容,360浏览器怎么看3个月以前的浏览记录?
  18. 剑三服务器维护是因为人太多吗,【剑网三相关 】阵营对战 从上午10点一直打到第二天凌晨6点半服务器维护 而且今天下午他们又开始打群架了...
  19. m3u8格式下载合并mp4视频
  20. 浏览器加载图片错误解决方案

热门文章

  1. [Pytorch 常用函数] 激活函数Relu, Leaky Relu
  2. java scanner的hasnext,Java Scanner hasNext()方法
  3. 一个小型 BI 项目的总结
  4. sequoia负载均衡
  5. 怎么样让别人访问我的计算机,局域网内怎么让别人访问我的电脑
  6. S5PV210开发 -- TTL和CMOS电平
  7. 蓝桥杯国赛C++A组B组题解整理(第八、七、六、五、四届)
  8. ios代码大全】代码例子区全区搜索索引
  9. Android开发平台
  10. 1020:Anniversary Cake