精华内容
下载资源
问答
  • cnn中关于平均池化和最大池化的理解 接触到pooling主要是在用于图像处理的卷积神经网络中,但随着深层神经网络的发展,pooling相关技术在其他领域,其他结构的神经网络中也越来越受关注。一个典型的卷积神经网络结构...

    cnn中关于平均池化和最大池化的理解

    接触到pooling主要是在用于图像处理的卷积神经网络中,但随着深层神经网络的发展,pooling相关技术在其他领域,其他结构的神经网络中也越来越受关注。
    一个典型的卷积神经网络结构图,其中的卷积层是对图像的一个邻域进行卷积得到图像的邻域特征,亚采样层就是使用pooling技术将小邻域内的特征点整合得到新的特征。

     

    作用

    pooling的结果是使得特征减少,参数减少,但pooling的目的并不仅在于此。

    pooling目的是为了保持某种不变性(旋转、平移、伸缩等)

     

    分类

    常用的有mean-pooling,max-pooling和Stochastic-pooling三种。

    mean-pooling,即对邻域内特征点只求平均,

    max-pooling,即对邻域内特征点取最大。

     

    根据相关理论,特征提取的误差主要来自两个方面:

    (1)邻域大小受限造成的估计值方差增大

    (2)卷积层参数误差造成估计均值的偏移

     

    一般来说,

    mean-pooling能减小第一种误差(邻域大小受限造成的估计值方差增大),更多的保留图像的背景信息,

    max-pooling能减小第二种误差(卷积层参数误差造成估计均值的偏移),更多的保留纹理信息。

    Stochastic-pooling则介于两者之间,通过对像素点按照数值大小赋予概率,再按照概率进行亚采样,在平均意义上,与mean-pooling近似,在局部意义上,则服从max-pooling的准则。

     

    LeCun的“Learning Mid-Level Features For Recognition”对前两种pooling方法有比较详细的分析对比,如果有需要可以看下这篇论文。

     

     

    pooling的反向传播

    原则:把1个像素的梯度传递给4个像素,但是需要保证传递的loss(或者梯度)总和不变

     

    对于mean pooling,真的是好简单:假设pooling的窗大小是2x2, 在forward的时候啊,就是在前面卷积完的输出上依次不重合的取2x2的窗平均,得到一个值就是当前mean pooling之后的值。backward的时候,把一个值分成四等分放到前面2x2的格子里面就好了。如下

    forward: [1 3; 2 2] -> [2] 
    backward: [2] -> [0.5 0.5; 0.5 0.5]

    max pooling就稍微复杂一点,forward的时候你只需要把2x2窗子里面那个最大的拿走就好了,backward的时候你要把当前的值放到之前那个最大的位置,其他的三个位置都弄成0。如下

    forward: [1 3; 2 2] -> 3 
    backward: [3] -> [0 3; 0 0]

     

    1、mean pooling

    mean pooling的前向传播就是把一个patch中的值求取平均来做pooling,那么反向传播的过程也就是把某个元素的梯度等分为n份分配给前一层,这样就保证池化前后的梯度(残差)之和保持不变,还是比较理解的,图示如下 
    这里写图片描述
    mean pooling比较容易让人理解错的地方就是会简单的认为直接把梯度复制N遍之后直接反向传播回去,但是这样会造成loss之和变为原来的N倍,网络是会产生梯度爆炸的。

    2、max pooling

    max pooling也要满足梯度之和不变的原则,max pooling的前向传播是把patch中最大的值传递给后一层,而其他像素的值直接被舍弃掉。那么反向传播也就是把梯度直接传给前一层某一个像素,而其他像素不接受梯度,也就是为0。所以max pooling操作和mean pooling操作不同点在于需要记录下池化操作时到底哪个像素的值是最大

    源码中有一个max_idx_的变量,这个变量就是记录最大值所在位置的,因为在反向传播中要用到,那么假设前向传播和反向传播的过程就如下图所示 
    这里写图片描述

     

    https://blog.csdn.net/junmuzi/article/details/53206600

    https://blog.csdn.net/qq_21190081/article/details/72871704

    转载自cnn中关于平均池化和最大池化的理解 - sunflower_sara的机器学习园地 - CSDN博客

    展开全文
  • 一个典型卷积神经网络结构图,其中卷积层是图像一个邻域进行卷积得到图像邻域特征,亚采样层就是使用pooling技术将小邻域内特征点整合得到新特征。 作用 pooling结果是使得特征减少,参数减少,但...

    接触到pooling主要是在用于图像处理的卷积神经网络中,但随着深层神经网络的发展,pooling相关技术在其他领域,其他结构的神经网络中也越来越受关注。
    一个典型的卷积神经网络结构图,其中的卷积层是对图像的一个邻域进行卷积得到图像的邻域特征,亚采样层就是使用pooling技术将小邻域内的特征点整合得到新的特征。

    作用

    pooling的结果是使得特征减少,参数减少,但pooling的目的并不仅在于此。

    pooling目的是为了保持某种不变性(旋转、平移、伸缩等)

    分类

    常用的有mean-pooling,max-pooling和Stochastic-pooling三种。

    mean-pooling,即对邻域内特征点只求平均,

    max-pooling,即对邻域内特征点取最大。

     

    根据相关理论,特征提取的误差主要来自两个方面:

    (1)邻域大小受限造成的估计值方差增大

    (2)卷积层参数误差造成估计均值的偏移

    一般来说

    mean-pooling能减小第一种误差(邻域大小受限造成的估计值方差增大),更多的保留图像的背景信息,

    max-pooling能减小第二种误差(卷积层参数误差造成估计均值的偏移),更多的保留纹理信息。

    Stochastic-pooling则介于两者之间,通过对像素点按照数值大小赋予概率,再按照概率进行亚采样,在平均意义上,与mean-pooling近似,在局部意义上,则服从max-pooling的准则。

    LeCun的“Learning Mid-Level Features For Recognition”对前两种pooling方法有比较详细的分析对比,如果有需要可以看下这篇论文。

     

    pooling的反向传播

    原则:把1个像素的梯度传递给4个像素,但是需要保证传递的loss(或者梯度)总和不变

     

    对于mean pooling,真的是好简单:假设pooling的窗大小是2x2, 在forward的时候啊,就是在前面卷积完的输出上依次不重合的取2x2的窗平均,得到一个值就是当前mean pooling之后的值。backward的时候,把一个值分成四等分放到前面2x2的格子里面就好了。如下

    forward: [1 3; 2 2] -> [2] 
    backward: [2] -> [0.5 0.5; 0.5 0.5]

    max pooling就稍微复杂一点,forward的时候你只需要把2x2窗子里面那个最大的拿走就好了,backward的时候你要把当前的值放到之前那个最大的位置,其他的三个位置都弄成0。如下

    forward: [1 3; 2 2] -> 3 
    backward: [3] -> [0 3; 0 0]

    1、mean pooling

    mean pooling的前向传播就是把一个patch中的值求取平均来做pooling,那么反向传播的过程也就是把某个元素的梯度等分为n份分配给前一层,这样就保证池化前后的梯度(残差)之和保持不变,还是比较理解的,图示如下 
    这里写图片描述
    mean pooling比较容易让人理解错的地方就是会简单的认为直接把梯度复制N遍之后直接反向传播回去,但是这样会造成loss之和变为原来的N倍,网络是会产生梯度爆炸的。

    2、max pooling

    max pooling也要满足梯度之和不变的原则,max pooling的前向传播是把patch中最大的值传递给后一层,而其他像素的值直接被舍弃掉。那么反向传播也就是把梯度直接传给前一层某一个像素,而其他像素不接受梯度,也就是为0。所以max pooling操作和mean pooling操作不同点在于需要记录下池化操作时到底哪个像素的值是最大

    源码中有一个max_idx_的变量,这个变量就是记录最大值所在位置的,因为在反向传播中要用到,那么假设前向传播和反向传播的过程就如下图所示 
    这里写图片描述

     

    https://blog.csdn.net/junmuzi/article/details/53206600

    https://blog.csdn.net/qq_21190081/article/details/72871704

    对全局平均池化(GAP)过程的理解

    对学习Class Activation Mapping(CAM)原文献的时候提到的全局平均池化GAP方法做个简单的知识补充。

    所谓的全局就是针对常用的平均池化而言,平均池化会有它的filter size,比如 2 * 2,全局平均池化就没有size,它针对的是整张feature map.

    全局平均池化(Global average Pooling)由 M. Lin, Q. Chen, and S. Yan. Network in network. Interna-

    tional Conference on Learning Representations, 2014.提出来。

    用个简单的例子来说明它的过程,作用请看原文献或者百度。

    一个feature map 全局平均池化后得到一个值,再进行全连接(softmax)就会少很多参数。

     

     

    展开全文
  • 一、pooling层作用 ... 卷积神经网络中卷积层是图像一个邻域进行卷积得到图像邻域特征,亚采样层就是使用pooling技术将小邻域内特征点整合得到新特征。pooling确实起到了整合特征作用。 pooli...

    一、pooling层的作用
          pooling主要是在用于图像处理的卷积神经网络中,但随着深层神经网络的发展,pooling相关技术在其他领域,其他结构的神经网络中也越来越受关注。 
         卷积神经网络中的卷积层是对图像的一个邻域进行卷积得到图像的邻域特征,亚采样层就是使用pooling技术将小邻域内的特征点整合得到新的特征。pooling确实起到了整合特征的作用。 
          pooling的结果是使得特征减少,参数减少,但pooling的目的并不仅在于此。pooling目的是为了保持某种不变性(旋转、平移、伸缩等),常用的有mean-pooling,max-pooling和Stochastic-pooling三种。average对背景保留更好,max对纹理提取更好,如果是识别字体什么的,应该考虑max。因为一幅图片中,背景的变化总是连续的相对缓和的,因此average对背景保留会更好,而图像中的特征多为图像中的尖锐的区域,因此多用max。
          

             由Yann Lecun, Yoshua Bengio, Geoffery Hinto撰写的Deep Learning Review(发表在Nature)中提到了池化层能够reduce the dimensionality of the representation, create an invariance to small shifts and distortions. 池化层能够降低特征表示的维度这个很好理解,伴随来的副作用是局部特征信息的损失,想象如果池化层的filtering bank不是通常的2x2维的矩阵,而是更大维度的矩阵,用max pooling 或者average pooling,信息会损失更多,而且因为每层卷积后都跟着池化层,实际上是相当于在特征的每个提取阶段,从低级特征到中级特征再到高级特征,都有略微的信息损失,因为做了多层的pooling,而不是只做一次pooling,这也是设计上的一个trick啊.这是计算复杂度和性能的trade-off, 信息如果不损失,模型的性能当然会更好,最后得到的特征表示更全面,随着计算能力的提高,这一点也在逐渐得到缓和.
           我的理解:pooling层一方面减少了参数起到了降维的作用,降低了计算的复杂度,另一方面虽然这样做会引起信息的损失,但是我认为在一定程度上这是一个特征的提取从特殊到一般化的过程,也就提高了模型的泛化能力,这样可以更好的对图像进行分辨。

             第二个作用是具有一定程度上的平移和失真不变性,注意原文是说small shifts and distortions,我把他翻译成一定程度,这个程度我认为取决于pooling层中的filtering bank的维度大小。  

        如果人们选择图像中的连续范围作为池化区域,并且只是池化相同(重复)的隐藏单元产生的特征,那么,这些池化单元就具有平移不变性 (translation invariant)。这就意味着即使图像经历了一个小的平移之后,依然会产生相同的 (池化的) 特征。在很多任务中 (例如物体检测、声音识别),我们都更希望得到具有平移不变性的特征,因为即使图像经过了平移,样例(图像)的标记仍然保持不变。例如,如果你处理一个MNIST数据集的数字,把它向左侧或右侧平移,那么不论最终的位置在哪里,你都会期望你的分类器仍然能够精确地将其分类为相同的数字。

    请注意这句话:“即使图像经历了一个小的平移之后”,这是指你的平移小于你的池化矩阵的范围。所以只有平移小于这个范围,才能保证平移不变性。点击打开链接此链接可以更好的理解池化不变性。

    二、ReLU作为激活函数的好处

    最近几年卷积神经网络中,激活函数往往不选择sigmoid或tanh函数,而是选择relu函数。Relu函数的定义是:

     

    Relu函数图像如下图所示:



    Relu函数作为激活函数,有下面几大优势:

       稀疏性 通过对大脑的研究发现,大脑在工作的时候只有大约5%的神经元是激活的,而采用sigmoid激活函数的人工神经网络,其激活率大约是50%。有论文声称人工神经网络在15%-30%的激活率时是比较理想的。因为relu函数在输入小于0时是完全不激活的,因此可以获得一个更低的激活率。

    三、全连接层

    • 参数数量太多

     

    考虑一个输入1000*1000像素的图片(一百万像素,现在已经不能算大图了),输入层有1000*1000=100万节点。假设第一个隐藏层有100个节点(这个数量并不多),那么仅这一层就有(1000*1000+1)*100=1亿参数,这实在是太多了!我们看到图像只扩大一点,参数数量就会多很多,因此它的扩展性很差。

     

    • 没有利用像素之间的位置信息 

     

    对于图像识别任务来说,每个像素和其周围像素的联系是比较紧密的,和离得很远的像素的联系可能就很小了。如果一个神经元和上一层所有神经元相连,那么就相当于对于一个像素来说,把图像的所有像素都等同看待,这不符合前面的假设。当我们完成每个连接权重的学习之后,最终可能会发现,有大量的权重,它们的值都是很小的(也就是这些连接其实无关紧要)。努力学习大量并不重要的权重,这样的学习必将是非常低效的。

     

    • 网络层数限制 

     

    我们知道网络层数越多其表达能力越强,但是通过梯度下降方法训练深度全连接神经网络很困难,因为全连接神经网络的梯度很难传递超过3层。因此,我们不可能得到一个很深的全连接神经网络,也就限制了它的能力。


         

    <img src="https://pic3.zhimg.com/50/v2-a08dae108e328b5bb0ce81ed15267e09_hd.jpg" data-rawwidth="1684" data-rawheight="954" class="origin_image zh-lightbox-thumb" width="1684" data-original="https://pic3.zhimg.com/v2-a08dae108e328b5bb0ce81ed15267e09_r.jpg">


    展开全文
  • 池化方法总结(Pooling) ...内容包括: 一般池化(General Pooling) 重叠池化(OverlappingPooling) 空金字塔池化(Spatial Pyramid Pooling) 全局平均池化(GAP)过程的理解 https://blog.csdn.n...

    池化方法总结(Pooling)
    https://blog.csdn.net/danieljianfeng/article/details/42433475
    内容包括:
    一般池化(General Pooling)
    重叠池化(OverlappingPooling)
    空金字塔池化(Spatial Pyramid Pooling)

    对全局平均池化(GAP)过程的理解
    https://blog.csdn.net/u014264373/article/details/80516294
    Global Average Pooling全局平均池化的一点理解
    https://blog.csdn.net/qq_23304241/article/details/80292859

    展开全文
  • 遥感图像的地物种类识别在土地资源管理、生态系统监测和森林状态评估等领域中起着基础性作用,该任务的主要目的是通过图像特征的理解和分析,判断出图像中所包含的主要目标类别信息,如农作物、沙滩或森林等。...
  • 每一个AI抱有憧憬小白,在开始时候都会遇到CNN(卷积神经网络)这个词。 但每次,当小白们想了解CNN到底是怎么回事,为什么就能聪明识别人脸、听辨声音时候,就懵了,只好理解为玄学: 好吧,维基...
  • 今天在学习卷积神经网络时发现这样一句话:卷积神经网络使用局部连接、权值共享、多卷积核以及池化四个关键技术,教材上这四大技术的讲解也不是很明了,查阅资料后大致有了自己的理解的认识,在此记录一下。...
  • Java线程池复用理解

    千次阅读 2019-01-01 19:05:00
    前情 今天是我第三次看线程池的源码,才敢写下这一...在我的理解中,池化技术,无论是连接池还是线程池,核心就是复用二字.池化技术往简单了说,就是重复利用一些比较"昂贵"的资源....
  • 程序运行,其本质上,...我希望查看线程池原理,明白池化技术的基本设计思路。遇到其他相似问题可以解决。 池化技术 何为池化技术,简单点来说,就是提前保存大量的资源,以备不时之需。在资源有限的情况下,该技术...
  • 在无人驾驶技术中,道路场景的理解是一个非常重要的环境感知任务,也是一个很具有挑战性的课题。提出了一个深层的道路场景分割网络(Road Scene Segmentation Network,RSSNet),该网络为32层的全卷积神经网络,由...
  • 想了想与其烦不如来写篇博客吧,本文就只说CNN工作原理不涉及编码和具体技术,算CNN入门一窥吧。 卷积神经网络我觉得可以分成两个部分:特征提取+分类。分别对应是特征提取:卷积+池化+Dropout,分类:...
  • 池化技术 池化技术简单点来说,就是提前...本文主要来介绍一下其中比较简单的线程池的实现原理,希望读者们可以举一反三,通过线程池的理解,学习并掌握所有编程中池化技术的底层原理。 创建一个线程 在Ja...
  • 线程池

    2021-01-23 20:43:05
    我们需要去理解池化技术池化技术可以优化资源使用,我们常见池有线程池、常量池、连接池等。池化说简单点就是预先准备好,然后需要拿直接过来拿取,用完之后在进行归还。 线程池好处是什么? 可以控制并发...
  • 池化技术在计算机中应用十分广泛,而比较常用就是内存池和线程池。如果你线程池有一定了解,那么理解内存池就自然也不是什么困难事情。 “池”在我们日常生活中通常都是用来储水,而计算机中“池”自然...
  • 像线程池、连接池这些池化技术, 主要通过线程/连接进行管理, 使得线程/连接可以复用, 因为线程/连接创建是很昂贵(开销大), 所以通过池化技术来进行管理, 避免频繁创建销毁很有必要. 创建一个线程池需要哪些...
  • 再聊线程池

    2017-10-24 21:04:38
    最近恰好在组内分享线程池,又看了看四年前自己写的线程池文章,一是感叹时光荏苒,二是感叹当时的理解太浅薄了,三是感叹自己这么多年依然停留在浅薄的理解当中,没有探究其实现,羞愧难当。遂把分享的内容整理出来...
  • 之前也看过网上很多线程分析和讲解的文章,但是总是记不住他们到底讲了什么,真正等到来用的时候又忘记了,其实只有我们真正的钻入到代码以后才能真正的理解,然后再加以用我们生活的一些例子来里面的术语进行...
  • 在平时开发中,经常遇到这样东西,例如数据库连接池,web请求也是使用的池化技术,只是我们直接接触比较少而已; 正文 什么是线程池 简单点理解就是装线程一个池子,一种池化思想一定数量线程进行管理,...
  • CNN模型分析 | 3 ZFNet

    2019-11-30 18:19:25
    文章目录ZFNet网络AlexNet网络设计思想主要设计贡献ZFNetAlexNet网络进行调整ZFNet网络核心架构反卷积和反池化 ZFNet网络 ZFNet,Matthew D Zeiler在2013年发表卷积网络模型 AlexNet网络设计思想 主要设计...
  • 本文首先将图像特征信息转化为二阶统计量,并且引入Power Normalization(PN)技术对其进行池化处理,最后采用距离度量方式来实现分类任务。整个网络流程如下图所示   网络主体部分如图a所示,首先支持集...
  • Java线程池原理分析

    2018-04-15 22:23:28
    首先感谢Sam老师公开课,让鄙人线程池有一些深刻... 总归为:池化技术 ---》数据库连接池 缓存架构 缓存池 线程池 内存池,连接池,这种思想演变成缓存架构技术---> JDK设计思想有千丝万缕联系 ...
  • java线程池理解 在面向对象编程中,对象创建和销毁是很费时间,因为创建一个对象要获取内存资源或者其它更多...如何利用已有对象来服务就是一个需要解决关键问题,其实这就是一些"池化资源"技术产生...
  • 理解卷积,最大池化和上采样操作 了解 DeeplabV3++架构理念 3图像分割 图像分割就是把图像分成若干个特定、具有独特性质区域并提出感兴趣目标的技术和过程。 4 训练模型 模型结构 DeepLabV3+ 在 stride = 16 ...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
热门标签
关键字:

对池化技术的理解