原文地址:https://blog.csdn.net/CVSvsvsvsvs/article/details/90477062

池化层作用机理
我们以最简单的最常用的max pooling最大池化层为例,对池化层作用机理进行探究。其他池化层的作用机理也大致适用这一机理,在这里就不加入讨论。
图片和以下部分内容来自 CS231n
从上面左图可以看到,使用了pool操作其实就是降低图片的空间尺寸。右图使用一个 2 × 2的 池化核(filter),以2为步长(stride),对图片进行max pooling,那么会图片就会尺寸就会减小一半。需要注意,这里是因为 stride = 2,所以图片尺寸才会减少一半的。
CS231n又对池化进行了量化的阐述:
上图表示的意思就是:
给定一个图片的三个维度的尺寸, 即【Channel, Height, Width】,以及给定两个超参数池化核尺寸 【F × F】,池化步长【S】,就可以计算池化后的图片尺寸,见上图公式。
池化核这个filter是不需要保留参数的,不同于conv filter, 每一个pooling filter就是一个固定的函数,比如max pooling,就是取这个filter覆盖区域像素的最大值而已。所以我们在计算卷积层数的时候,不计入池化层。
对于pooling 层,我们通常不需要使用 padding。这是由于采用pooling通常是为了减少一半的图片尺寸,我们使用 kernel size = 2 * 2,以及stride = 2的池化核。就可以在不padding 的情况下,将尺寸变为一半。
CS231n还介绍了另外一种常见的池化核, 其步长为 2,kernel size = 3 * 3,  叫做覆盖池化层,其含义也就是在前后两次的滤波窗口之间有一个像素的重叠。该池化核在AlexNet中得到了应用,见ImageNet Classification with Deep Convolutional
Neural Networks
It is worth noting that there are only two commonly seen variations of the max pooling layer found  in practice:A pooling layer with F=3,S=2 (also called overlapping pooling), and more commonly F=2,S=2.
Pooling sizes with larger receptive fields are too destructive.
CS231n 同时也告诫我们,使用大尺寸的池化核去增大感受野是destructive(破坏性的)。这很容易理解,增大池化核,将损失更多的图片像素信息。
看到这里,你可能会有两个疑问:
为什么可以降低图片空间尺寸呢?
为什么要降低图片的空间尺寸呢?
这两个问题,其实是触及了池化技术的本质:在尽可能保留图片空间信息的前提下,降低图片的尺寸,增大卷积核感受野,提取高层特征,同时减少网络参数量,预防过拟合。
先来探讨第一个问题。
为什么可以降低图片空间尺寸?
这个问题很简单,等比例缩小图片,图片的主体内容丢失不多,具有平移,旋转,尺度的不变性,简单来说就是图片的主体内容依旧保存着原来大部分的空间信息。
为什么要降低图片的尺寸?
我们知道在卷积神经网络中,如果特征抽取后最终输出特征图尺寸太大,将会导致输出结果的特征太多,计算量剧增的同时,将其输入到一个分类器(通常是全连接层Full Connected layer),很容易就会导致过拟合。就像机器学习一样,特征过多的话,我们可能会考虑降维(如PCA)来减少特征,增强拟合能力。
简单来说:降低尺寸,有助于减少计算量以及特征数量,保留主要特征,增大卷积核感受野,防止过拟合。
但我们在做卷积的时候,让conv 层的步长stride = 2同样也可以起到降低尺寸的目的啊,为什么需要pooling 层来降低尺寸,这就回到了上文的:池化层不需要保留参数。它采用一个固定的函数进行像素运算,如max pooling filter中采用了max函数,是不需要保留参数的,所以减少了网络的参数量。
增大感受野是怎么回事,我们知道在实际训练中,我们的卷积核一般就是比较小的,如3 * 3,这些卷积核本质就是在特征图上进行滤波窗口计算并滑动。如果要保持卷积核大小不变,同时增大卷积核覆盖区域(感受野增大,便于提取高层语义),那么就可以对图片尺寸进行下采样。
当然增大感受野也有其他方式,如膨胀卷积运算,在保证特征图尺寸不变的情况下,可以增大卷积核的感受野。
不过值得一提的是:在像素信息较为敏感的一些视觉任务中(如分割,检测),一般是较少使用pooling操作来下采样的,通常使用插值(如双线性插值等)或者stride=2的卷积层来进行下采样,尽可能的保留像素信息,这也是pooling操作的缺点,不过使用pooling也有其优点,就有无参数的好处。
如果你追求更加理论和硬核的pooling解释的话,我推荐你去看一下LeCun在10年ICML的论文:A Theoretical Analysis of Feature Pooling in Visual Recognition。
————————————————
版权声明:本文为CSDN博主「qyhyzard」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CVSvsvsvsvs/article/details/90477062

深入解析CNN pooling 池化层原理及其作用的更多相关文章

  1. CNN之池化层tf.nn.max_pool | tf.nn.avg_pool | tf.reduce_mean | padding的规则解释

    摘要:池化层的主要目的是降维,通过滤波器映射区域内取最大值.平均值等操作. 均值池化:tf.nn.avg_pool(input,ksize,strides,padding) 最大池化:tf.nn.ma ...

  2. 【深度学习篇】--神经网络中的池化层和CNN架构模型

    一.前述 本文讲述池化层和经典神经网络中的架构模型. 二.池化Pooling 1.目标 降采样subsample,shrink(浓缩),减少计算负荷,减少内存使用,参数数量减少(也可防止过拟合)减少输 ...

  3. ubuntu之路——day17.3 简单的CNN和CNN的常用结构池化层

    来看上图的简单CNN: 从39x39x3的原始图像 不填充且步长为1的情况下经过3x3的10个filter卷积后 得到了 37x37x10的数据 不填充且步长为2的情况下经过5x5的20个filter ...

  4. 神经网络中的池化层(pooling)

    在卷积神经网络中,我们经常会碰到池化操作,而池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果(不易出现过拟合).为什么可以通过降低维度呢? 因为图像具有一种“静态性”的属性,这 ...

  5. day-16 CNN卷积神经网络算法之Max pooling池化操作学习

    利用CNN卷积神经网络进行训练时,进行完卷积运算,还需要接着进行Max pooling池化操作,目的是在尽量不丢失图像特征前期下,对图像进行downsampling. 首先看下max pooling的 ...

  6. CNN学习笔记:池化层

    CNN学习笔记:池化层 池化 池化(Pooling)是卷积神经网络中另一个重要的概念,它实际上是一种形式的降采样.有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见 ...

  7. CNN中卷积层 池化层反向传播

    参考:https://blog.csdn.net/kyang624823/article/details/78633897 卷积层 池化层反向传播: 1,CNN的前向传播 a)对于卷积层,卷积核与输入 ...

  8. tensorflow 1.0 学习:池化层(pooling)和全连接层(dense)

    池化层定义在 tensorflow/python/layers/pooling.py. 有最大值池化和均值池化. 1.tf.layers.max_pooling2d max_pooling2d( in ...

  9. 图像处理池化层pooling和卷积核

    1.池化层的作用 在卷积神经网络中,卷积层之间往往会加上一个池化层.池化层可以非常有效地缩小参数矩阵的尺寸,从而减少最后全连层中的参数数量.使用池化层即可以加快计算速度也有防止过拟合的作用. 2.为什 ...

随机推荐

  1. string 驻留机制

    string 驻留机制   string s1 = "abc"; string s2 = "ab"; string s3 = s2 + "c" ...

  2. Wayos网吧路由英雄联盟频繁掉线解决办法

    英雄联盟某些机器瞬间ping值飙升,然后一直掉线重连!研究好久,解决了,经验与大家分享 第一步,在路由器地址后加qos_ext.htm进入qos参数设置页面(如果出现不了设置界面请更新固件).比如:h ...

  3. linux 网卡配置详情

    1.配置文件/etc/hosts(本地主机ip地址映射,可以有多个别名)./etc/services(端口号与标准服务之间的对应关系)./etc/sysconfig/network(设置主机名,网关, ...

  4. 15 Zabbix4.4.1系统告警“sda: Disk read/write request response are too high”

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 Zabbix4.4.1系统告警“sda: Disk read/write request resp ...

  5. python django 重新安装不能创建项目

    这里仅给大家做个思路提醒: 1.如果在别的地方找到一样的问题那就按别的方法去解决 2.如果是创建startproject的时候 报错:no module named 'mysite'  这个的话就和 ...

  6. linux ngxtop安装安装及使用

    写在前面: ngxtop是Nginx日志实时分析利器 1.下载 下载地址:https://github.com/lebinh/ngxtop  下载zip文件到本地 登录linux服务器,定位到安装目录 ...

  7. HihoCoder1052基因工程(简单模拟题)

    描述 小Hi和小Ho正在进行一项基因工程实验.他们要修改一段长度为N的DNA序列,使得这段DNA上最前面的K个碱基组成的序列与最后面的K个碱基组成的序列完全一致. 例如对于序列"ATCGAT ...

  8. HTML中的      等6种空格标记

    HTML提供了5种空格实体(space entity),它们拥有不同的宽度,非断行空格( )是常规空格的宽度,可运行于所有主流浏览器.其他几种空格(      ‌‍)在不同浏览器中宽度各异.   它叫 ...

  9. shell脚本日志指南(1)

    1.初始化日志文件.对文件的大小进行判断和压缩 LOG=$ if [ -e "${LOG}" ];then LOG_SIZE=`ls -l "${LOG}"| ...

  10. Python 模块 Ⅱ

    搜索路径 当你导入一个模块,Python 解析器对模块位置的搜索顺序是: 1.当前目录 2.如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录. 3.如果都 ...