深度学习笔记(25) 池化层

  • 1. max pooling
  • 2. mean pooling
  • 3. pooling 超参

1. max pooling

除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性

假如输入是一个4×4矩阵,用到的池化类型是最大池化(max pooling)
执行最大池化的树池是一个2×2矩阵

执行过程非常简单
把4×4的输入拆分成不同的区域,把这个区域用不同颜色来标记
对于2×2的输出,输出的每个元素都是其对应颜色区域中的最大元素值

最大池化的超参数:一个2×2矩阵,即 fff = 2,步幅是2,即 sss = 2
最大池化功能的直观理解:
可以把这个4×4区域看作是某些特征的集合
也就是神经网络中某一层的非激活值集合

数字大意味着可能探测到了某些特定的特征
左上象限具有的特征可能是一个垂直边缘,一只眼睛、或是CAP特征 1

显然左上象限中存在这个特征,这个特征可能是一只猫眼探测器
然而,右上象限并不存在这个特征

最大化操作的功能:
只要在任何一个象限内提取到某个特征,它都会保留在最大化的池化输出里

所以最大化运算的实际作用:
如果在过滤器中提取到某个特征,那么保留其最大值

如果没有提取到这个特征,可能在右上象限中不存在这个特征
那么其中的最大值也还是很小,这就是最大池化的直观理解

其中一个有意思的特点:
它有一组超参数,但并没有参数需要学习
实际上,梯度下降没有什么可学的
一旦确定了 fff 和 sss,它就是一个固定运算,梯度下降无需改变任何值


如一个有若干个超级参数,输入是一个 5×5的矩阵
采用最大池化法,它的过滤器参数为3×3,即 fff = 3
步幅为1,sss = 1
输出矩阵是 3×3
之前的计算卷积层输出大小的公式同样适用于最大池化
即 (n+2p−f)/s+1(n+2p-f)/s+1(n+2p−f)/s+1,这个公式也可以计算最大池化的输出大小

以上就是一个二维输入的最大池化的演示
如果输入是三维的,那么输出也是三维的
例如,输入是5×5×2,那么输出是3×3×2
计算最大池化的方法就是分别对每个通道执行刚刚的计算过程
一般来说,如果输入是 5×5×nc,输出就是 3×3×nc
nc个通道中每个通道都单独执行最大池化计算


2. mean pooling

另外还有一种类型的池化,平均池化(mean pooling),但它不太常用
这种运算顾名思义,选取的不是每个过滤器的最大值,而是平均值


紫色区域的平均值是3.75,后面依次是1.25、4和2
这个平均池化的超级参数 fff = 2,sss = 2,也可选其它超级参数

目前来说,最大池化比平均池化更常用
但也有例外,就是深度很深的神经网络
可以用平均池化来分解规模为7×7×1000的网络的表示层
整个空间内求平均值,得到1×1×1000

但在神经网络中,最大池化要比平均池化用得更多


3. pooling 超参

总结一下,池化的超级参数包括过滤器大小 fff 和步幅 sss
常用的参数值为 fff = 2,sss = 2,应用频率非常高
其效果相当于高度和宽度缩减一半

也有使用 fff = 3,sss = 2,的情况
至于其它超级参数就要看用的是最大池化还是平均池化了

也可以根据自己意愿增加表示padding的其他超级参数,虽然很少这么用

最大池化时,往往很少用到超参数padding
当然也有例外的情况,目前 ppp 最常用的值是0,即ppp = 0

最大池化的输入就是 nH × nW × nc,假设没有padding
则输出

输入通道与输出通道个数相同,因为对每个通道都做了池化

需要注意的一点是,池化过程中没有需要学习的参数
执行反向传播时,反向传播没有参数适用于最大池化

只有这些设置过的超参数,可能是手动设置的,也可能是通过交叉验证设置的
最大池化只是计算神经网络某一层的静态属性
没有什么需要学习的,它只是一个静态属性


参考:

《神经网络和深度学习》视频课程


相关推荐:

深度学习笔记(24) 卷积层
深度学习笔记(23) 卷积维度
深度学习笔记(22) Padding
深度学习笔记(21) 边缘检测
深度学习笔记(20) 端到端学习


谢谢!


  1. 一个分布式系统中Consistency(一致性)、 Availability(可用性)和Partition tolerance(分区容错性)不可兼 ↩︎

深度学习笔记(25) 池化层相关推荐

  1. 深度学习基础之池化层

     谷歌浏览器搜索.看Youtube视频必备VPN:SockBoom 或者网址:https://sockboom.bar/auth/register?affid=212828 一.深度学习中池化层的作用 ...

  2. 基于主动视觉机制的深度学习--一个综合池化框架

    卷积神经网络(CNN)是深度学习的代表算法之一,长期以来被广泛应用于图像识别领域.它是受到了生物处理过程的启发,通过模仿人类视觉系统(HVS)的工作机制,完成各种视觉任务等.但与HVS相比,CNN不能 ...

  3. [pytorch、学习] - 5.4 池化层

    参考 5.4 池化层 在本节中我们介绍池化(pooling)层,它的提出是为了缓解卷积层对位置的过度敏感性. 5.4.1 二维最大池化层和平均池化层 池化层直接计算池化窗口内元素的最大值或者平均值.该 ...

  4. 深度学习笔记9:卷积层的实现(forward, backward 的实现)

    用for循环实现的卷积层: 卷积运算: import time """ 定义2维度卷积的非矩阵操作""" def Conv2d(X,W, s ...

  5. 吴恩达深度学习笔记3-Course1-Week3【浅层神经网络】

    浅层神经网络: 一.浅层神经网络的表示 本文中的浅层神经网络指的是 two layer nn 即 one input layer + one hidden layer + one output lay ...

  6. 深度学习笔记02——全连接层

    1. Fully connect 每一个activation function就是一个神经元.全连接层就是将每个神经元的输出都作为下一层所有神经元的输入. deep learning 就是有很多的hi ...

  7. 深度学习笔记(一):卷积层+池化层+激活函数+全连接层

    写在前面:大家好!我是[AI 菌],一枚爱弹吉他的程序员.我热爱AI.热爱分享.热爱开源! 这博客是我对学习的一点总结与记录.如果您也对 深度学习.机器视觉.算法.Python.C++ 感兴趣,可以关 ...

  8. 1.9 池化层-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.8 简单卷积网络示例 回到目录 1.10 卷积神经网络示例 池化层 (Pooling Layers) 除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度, ...

  9. 深度学习之卷积神经网络(7)池化层

    深度学习之卷积神经网络(7)池化层 在卷积层中,可以通过调节步长参数s实现特征图的高宽成倍缩小,从而降低了网络的参数量.实际上,处理通过设置步长,还有一种专门的网络层可以实现尺寸缩减功能,它就是这里要 ...

最新文章

  1. java爱暮色森林7.0js_我的世界手机版暮色森林js
  2. android.graphic.Path
  3. iphone屏幕突然变暗_iPhone或iPad在使用中发热厉害吗?以下是原因和解决方法
  4. linux下遍历目录树方法总结,linux下遍历目录树方法总结(下)
  5. 纪中培训总结(2019年1月21~31日)
  6. js 如何去除字符两端的引号
  7. 【LeetCode】3月24日打卡-Day9
  8. 战略管理只是高层的事?
  9. Python密码强度判断
  10. Modbus的CRC校验算法
  11. 智能门锁主要有哪些优势,具体是怎么分类的?
  12. Oracle varchar和varchar2的区别
  13. 大一计算机基础教程期末考试,大一大学计算机基础教程期末考试题.doc
  14. 人脸图像数据库(完整版)
  15. java 二进制加减_二进制加法Java实现
  16. Java如何从字符串中提取数字
  17. 如何设置python类的私有属性
  18. 在style中设置图片背景
  19. 黑帽SEO的常见操作手法解析
  20. 1.socket网络编程

热门文章

  1. Jinja2学习笔记暨官方文档的翻译 -- 转载
  2. 简单 Proxy 自动提款机应用
  3. 股市心态决定成败:不贪不惧不急不赌
  4. IBM T60网卡问题
  5. CentOS下用于查看系统当前登录用户信息的4种方法
  6. 显卡RTX 3090运行pytorch报错CUDA error: no kernel image is available for execution on the device
  7. linux学习第四周作业练习
  8. linux运维人员如何最大限度避免误删文件
  9. atitit查询表改动表字段没反应--解锁锁定的表
  10. Linux磁盘阵列技术详解(三)--raid 5和raid 10的创建 推荐