5分钟搞懂池化的本质

2023-10-29

大家好啊,我是董董灿!

在很多与计算机视觉相关的神经网络中,我们往往都会看到池化这一算法,它一般跟在卷积层后面。

神经网络中用到最多的池化方式无外乎是最大池化和平均池化。两者运算接近,区别在于是在kernel范围内取最大值还是取平均值来作为池化的输出。

那池化的本质是什么呢?为什么在神经网络中,尤其是CNN网络中,会需要用到池化算法呢?

1、池化的本质

先回顾下池化运算。

下图展示的是一个最大池化的计算过程。它利用一个2x2的核(kernel)来圈定一次池化的计算范围,每次选定输入图片中2x2范围内的最大值数值作为输出。

图片

这一过程非常简单,它计算的每一步,就是从选定的范围内,计算出一个数字来,这一过程也叫做特征的聚合(aggregation)

我们知道,卷积的输出是特征图,特征图的一个通道代表一个特征。

而针对特征图的池化操作在每个通道上是独立进行的,池化前后特征图变化的仅仅是长宽方向的尺寸。

那怎么理解特征聚合呢?

举个例子。

最大池化的每次计算,都是选取kernel范围内的最大值作为这个范围内最显著的特征代表。

一张图片中,像素值最大的地方,往往是图像突变最大的地方,比如图像的轮廓和边缘,因此最大池化,可以有效的提取图像的轮廓边缘信息。

也就是说,通过最大池化,输出了一个比原始图像在长宽方向尺寸更小的图片,但这个更小的图片却聚合了原始图像中最显著的轮廓和边缘特征。

达到了特征聚合的目的,这也是池化算法的本质。

围绕着这个本质,可以引申出几个池化算法的优势。

2、池化的优势

减少计算量

输出的图片在长宽方向上尺寸变小了,从而带来了计算量的减少,这一点是显而易见的。

减少过拟合的风险

计算量的减少,带来的另一个显著影响就是池化层后面的神经网络需要处理的特征图尺寸变小了,从而使得模型的参数量需求减少。

参数越少,过拟合的风险越低,这一点在训练过程中尤为重要。

提高模型对图片平移、缩放和旋转等变换的鲁棒性

之前看到这句话的时候,有点似懂非懂。后来查了一些资料,发现这句话说的其实是池化算法对于原始图片的变换具有轻微的容忍度。

也就是说,有了池化算法,模型可以容忍输入的图像有轻微的旋转、平移或者缩放,可以在不改变任何模型算法或结构的情况下,希望推理出正确的结果。

举个例子。

下面的图片示意了最大池化对于图片轻微旋转的容忍度。

图片

如果输入图片有轻微的旋转,经过最大池化,只要图片旋转的角度不是很厉害,依旧可以在对应位置获取到目标区域中的最大值12。

而对于图片的平移和缩放变换,池化算法同样有着类似的轻微容忍度。

注意这里一直在说是轻微的容忍度。如果一张图片旋转、平移过多,那么经过池化输出的结果肯定是不一样的,这时模型推理的结果可能也就不一样了。

正是因为这几个优势,使得池化操作经常会出现在CNN网络中。

好了,关于池化就写到这,不知看完之后,你对池化这一算法是否有了更深的认识了呢?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

5分钟搞懂池化的本质 的相关文章

随机推荐

  • 客户流失预测--基于R语言C5.0

    对于中国各大电信运营商而言 在整体市场规模相对稳定的情况下 能否维护好现有的客户是保证其收益的重中之重 因此 预测客户流失的可能性与否 直接关系到运营商的客户维护的重点正确与否 本文将基于 狗熊会 基础案例 收集客户流失 来演示基于C5 0
  • flutter webview 在iOS上不显示的问题

    使用的插件是 webview flutter 0 3 22 1 在android中可以正常显示 但是在ios端中既没有报错 又没有显示出来 后来查看插件使用说明才发现 忘记在ios端中端配置文件中进行配置了 此时我们需要在ios的runne
  • java 包扫描器

    java 包扫描器 扫描指定包下的所有java文件 并返回class数组 直接上代码 import java io File import java net URISyntaxException import java net URL im
  • 【Linux】gcc编译过程、make和makefile的概念与区别、Linux简单进度条实现

    文章目录 1 gcc编译过程 1 1预处理 1 2编译 1 3汇编 1 4链接 2 自动化构建工具 make和makefile 2 1使用背景 2 2两者的概念和区别 2 3项目清理 3 Linux简单进度条的实现 1 gcc编译过程 1
  • ubuntu安装qt

    ubuntu安装qt 第一步 下载安装包https download qt io archive qt 5 14 5 14 2 第二步 更改权限 sudo chmod x qt opensource linux x64 5 12 12 ru
  • JS中使用正则表达式g模式和非g模式的区别

    g是global的缩写啊 就是匹配全部可匹配结果 如果你不带g 在正则过程中 字符串是从左至右匹配的 如果匹配成功就不再继续向右匹配了 如果你带g 它会重头到尾的把正确匹配的字符串挑选出来 例如 1 2 3 4 5 var str aaaa
  • C++ std::vector删除元素的几种方式及区别

    容器vector在删除过程中 常用的函数 函数 作用 pop back 删除 vector 容器中最后一个元素 该容器的大小 size 会减 1 但容量 capacity 不会发生改变 erase iter 删除 vector 容器中ite
  • 机器学习——Kmeans聚类算法

    目录 简介 手肘法 手肘法核心思想 轮廓系数 代码举例1 代码举例2 实例 简介 K均值聚类算法是先随机选取K个对象作为初始的聚类中心 然后计算每个对象与各个种子聚类中心之间的距离 把每个对象分配给距离它最近的聚类中心 聚类中心以及分配给它
  • Qt之对话框设计——利用QPalette改变控件颜色

    QPalette类相当于对话框或控件的调色板 它管理着控件或窗体的所有颜色信息 每个窗体或控件都包含一个QPalette对象 在显示时按照它的QPalette对象中对各部分各状态下的颜色的描述来进行绘制 QPalette类有两个基本的概念
  • 【数学建模】混合整数规划MIP(Python+Gurobi代码实现)

    目录 1 概述 2 入门算例 2 1 算例 2 2 求解 Pulp库和cvxpy 3 进阶算例 3 1 算例 3 2 Python Gurobi代码实现 3 3 运行结果 1 概述 混合整数规划 MIP 是 NP hard 问题中的一类 它
  • ASP.NET MVC 之View相关

    VS2015 新建一个MVC工程 验证改成No Authentication 界面大致如下 得到一个解决方案如下 下面分析一下View ViewBag Title ViewPageOne Layout Views Shared Layout
  • 什么是数据挖掘,给出一个你在生活中应用数据挖掘技术的例子,分析数据挖掘的意义。...

    数据挖掘是指从大量数据中自动或半自动地发现有用的信息 模式和知识的过程 数据挖掘通常包括预处理数据 选择适当的数据挖掘技术 应用算法和模型 评估结果和解释发现的知识 一个我在生活中应用数据挖掘技术的例子是使用社交媒体平台的推荐算法 社交媒体
  • 【SQL触发器】类型 FOR 、AFTER、 Instead of到底是什么鬼

    前言 上一篇博客 博客连接 https blog csdn net jerry11112 article details 82924714 讲述了触发器的基本概念 触发器什么时候用 为什么用 这篇博客将简述触发器的类型 由于FOR触发器与A
  • GD32F330搭建工程记录: cannot open source input file “RTE_Components.h“: No such file or director

    有网友提出了解决方案 GD32F103搭建工程记录 cannot open source input file RTE Components h No such file or director 但没有确认原因 因此对此解决方案不是很满意
  • push代码时git did not exit cleanly (exit code 1).

    先缓存代码 stash changes 接着将代码拉下来 最后在把缓存读回去
  • 全力冲unreal了

    顺利辞职 其实 自己没想象中的那么重要 哈哈 交接清楚了 自然就批准离职了 以前种种 已成过往云烟 如今 再次全职unreal 再次两万五 该雪耻了 两年前的今天 好像也是全职unreal 两万五 哈哈 自以为这次准备充足了 全力冲就是了
  • 抽象类,接口,以及两者的区别

    1抽象类 含有abstract修饰符的class即为抽象类 abstract 类不能创建的实例对象 含有abstract方法的类必须定义为abstract class abstract class类中的方法不必是抽象的 abstract c
  • Python Mako

    git clone https bitbucket org zzzeek mako git Mako是用python语言开发的开源模板引擎 功能很强大 使用起来也很方便 下面介绍一下安装步骤 下载 请到官方网站http www makote
  • vue项目国际化 vue-i18n以及踩坑解决 小姐姐手把手教你VUE国际化~

    1 安装配置 安装 npm install vue i18n 或者 import VueI18n from vue i18n Vue use VueI18n 通过插件的形式挂载 const i18n new VueI18n locale z
  • 5分钟搞懂池化的本质

    大家好啊 我是董董灿 在很多与计算机视觉相关的神经网络中 我们往往都会看到池化这一算法 它一般跟在卷积层后面 神经网络中用到最多的池化方式无外乎是最大池化和平均池化 两者运算接近 区别在于是在kernel范围内取最大值还是取平均值来作为池化