卷积神经网络 - 汇聚层

卷积神经网络一般由卷积层、汇聚层和全连接层构成,本文我们来学习汇聚层。

汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer),其作用是进 行特征选择,降低特征数量,从而减少参数数量。

卷积层虽然可以显著减少网络中连接的数量,但特征映射组中的神经元个数并没有显著减少。如果后面接一个分类器,分类器的输入维数依然很高,很容易出现过拟合。为了解决这个问题,可以在卷积层之后加上一个汇聚层,从而降低特征维数,避免过拟合。

在卷积神经网络(CNN)中,汇聚层(Pooling Layer) 是一种用于降低数据空间维度、增强特征鲁棒性的关键组件。其核心目标是通过对局部区域进行压缩抽象,保留重要信息的同时减少计算量。以下从多个角度详细解析汇聚层的工作原理和实际意义:

一、汇聚层的核心功能

功能说明
降维压缩减少特征图尺寸(如4×4 → 2×2),降低后续层计算复杂度。
特征抽象通过取最大值/平均值,突出显著特征,抑制噪声和细节干扰。
平移不变性微小位置变化不影响输出(如猫耳朵偏移5像素仍被检测到)。
防止过拟合降低参数量的同时引入轻微扰动,增强模型泛化能力。

二、汇聚层的类型与计算

1. 最大汇聚(Max Pooling)
  • 操作:在局部窗口内取最大值。

  • 公式

  • 优势:保留最显著特征(如边缘、纹理),适合物体检测任务。

  • 示例

    • 输入窗口(2×2):

    • 输出值:8

2. 平均汇聚(Average Pooling)
  • 操作:在局部窗口内取平均值。

  • 公式

  • 优势:平滑特征响应,适合分类任务(如ImageNet)。

  • 示例

    • 输入窗口(2×2):同上

    • 输出值:(5+8+3+1)/4=4.25

3. 其他变体
  • 全局平均汇聚(Global Average Pooling, GAP):将每个通道的特征图压缩为单个值,替代全连接层(如ResNet)。

  • 重叠汇聚(Overlapping Pooling):窗口步长小于窗口尺寸(如AlexNet中3×3窗口步长2),增加信息重叠。

  • 随机汇聚(Stochastic Pooling):按概率选择窗口内的值,增强泛化性。

三、汇聚层的实际效果

1. 特征图尺寸变化
  • 输入尺寸:H×W×C

  • 汇聚参数:窗口大小 K×K,步长 S

  • 输出尺寸

  • 示例:输入7×7,窗口2×2,步长2 → 输出3×3。

2. 特征抽象过程
  • 浅层汇聚:过滤低层次噪声(如光照变化)。

  • 深层汇聚:提取语义级特征(如物体部件)。

四、汇聚层与卷积层的对比

维度汇聚层卷积层
参数学习无参数(固定操作)可学习权重和偏置
计算目标压缩空间维度,增强鲁棒性提取局部特征,增加通道数
平移不变性强(最大池化)中等(依赖卷积核设计)
典型位置常用于卷积层后网络的基础组件

五、汇聚层的替代方案

1. 步长卷积(Strided Convolution)
  • 原理:用步长>1的卷积直接降维(如步长2的3×3卷积)。

  • 优势:避免信息丢失(池化可能丢弃有用细节),参数可控。

  • 应用:ResNet、MobileNet等现代网络常用此方法。

2. 空洞卷积(Dilated Convolution)
  • 原理:通过扩大感受野替代池化,保持分辨率(如语义分割任务)。

  • 示例:空洞率=2的3×3卷积 → 等效5×5感受野。

3. 空间金字塔汇聚(Spatial Pyramid Pooling, SPP)
  • 原理:多尺度池化后拼接,处理任意尺寸输入(如Fast R-CNN)。

六、总结与选择建议

核心价值
  • 计算效率:通过降维减少后续层的参数量和计算量。

  • 鲁棒性:最大池化提供对微小形变的容忍度。

  • 通用性:简单有效,适用于大多数视觉任务。

适用场景
  • 必须使用池化:传统CNN架构(如LeNet、AlexNet)、资源受限场景。

  • 可替代方案:需要高分辨率输出的任务(如分割)、现代轻量级网络(如MobileNet)。

设计建议
  1. 浅层网络:优先使用最大池化(保留关键特征)。

  2. 深层网络:可尝试步长卷积或空洞卷积(减少信息损失)。

  3. 分类任务:结合全局平均池化(GAP)替代全连接层。

  4. 密集预测任务(如分割):减少池化层数,或用空洞卷积保持分辨率。

最终结论
汇聚层是CNN中平衡计算效率特征鲁棒性的关键设计,其本质是通过局部区域的统计操作(最大/平均),在压缩数据的同时保留语义信息。合理选择池化策略,能显著提升模型性能与泛化能力。

七、局部窗口内取平均值的例子

以下是一个具体的平均汇聚(Average Pooling)示例,通过逐步计算展示如何在局部窗口内取平均值:

示例设定

  • 输入特征图(4×4矩阵):

    [[2, 5, 3, 8],[4, 7, 1, 6],[9, 2, 5, 4],[3, 6, 7, 1]
    ]
  • 池化参数

    • 窗口大小:2×2

    • 步长(Stride):2(不重叠滑动)

    • 填充(Padding):0

计算过程

步骤1:划分第一个窗口(左上角2×2区域)
  • 覆盖输入值

    [2, 5]
    [4, 7]
  • 计算平均值

    (2+5+4+7)/4=18/4=4.5
步骤2:向右滑动窗口(右上角2×2区域)
  • 覆盖输入值

    [3, 8]
    [1, 6]
  • 计算平均值

    (3+8+1+6)/4=18/4=4.5
步骤3:向下滑动窗口(左下角2×2区域)
  • 覆盖输入值

    [9, 2]
    [3, 6]
  • 计算平均值

    (9+2+3+6)/4=20/4=5.0
步骤4:向右滑动窗口(右下角2×2区域)
  • 覆盖输入值

    [5, 4]
    [7, 1]
  • 计算平均值

    (5+4+7+1)/4=17/4=4.25

最终输出特征图

[[4.5, 4.5],[5.0, 4.25]
]

关键说明

  1. 窗口与步长的影响

    • 输入尺寸:4×4

    • 窗口大小:2×2

    • 步长:2

    • 输出尺寸:

  2. 平均池化的意义

    • 平滑特征:抑制极端值(如原始矩阵中的9),保留区域整体强度。

    • 示例对比:若使用最大池化,右下角窗口输出为7(保留最大值),而平均池化为4.25,反映区域平均水平。

  3. 扩展场景

    • 重叠池化:若步长=1,窗口会重叠,输出尺寸变为3×3。

    • 全局平均池化:若窗口=输入尺寸(4×4),输出单个值:

通过这个例子可以看出,平均池化通过局部平均操作,将输入特征图压缩为更低维度的表示,同时减少对噪声的敏感度。

八、局部窗口内取最大值的例子

以下是一个具体的最大汇聚(Max Pooling)示例,通过逐步计算展示如何在局部窗口内取最大值:

示例设定

  • 输入特征图(4×4矩阵):

    [[2, 5, 3, 8],[4, 7, 1, 6],[9, 2, 5, 4],[3, 6, 7, 1]
    ]
  • 池化参数

    • 窗口大小:2×2

    • 步长(Stride):2(不重叠滑动)

    • 填充(Padding):0

计算过程

步骤1:划分第一个窗口(左上角2×2区域)
  • 覆盖输入值

    [2, 5]
    [4, 7]
  • 取最大值

    max⁡(2,5,4,7)=7
步骤2:向右滑动窗口(右上角2×2区域)
  • 覆盖输入值

    [3, 8]
    [1, 6]
  • 取最大值

    max⁡(3,8,1,6)=8
步骤3:向下滑动窗口(左下角2×2区域)
  • 覆盖输入值

    [9, 2]
    [3, 6]
  • 取最大值

    max⁡(9,2,3,6)=9
步骤4:向右滑动窗口(右下角2×2区域)
  • 覆盖输入值

    [5, 4]
    [7, 1]
  • 取最大值

    max⁡(5,4,7,1)=7

最终输出特征图

[[7, 8],[9, 7]
]

关键说明

  1. 窗口与步长的影响

    • 输入尺寸:4×4

    • 窗口大小:2×2

    • 步长:2

    • 输出尺寸:

  2. 最大池化的意义

    • 保留显著特征:例如左下角窗口的输入值 9(原始特征图中的最大值)被保留,而平均池化会将其平滑为 5.0

    • 抗噪声能力:若窗口内存在异常值(如传感器噪声),最大池化可能放大噪声影响,而平均池化可抑制噪声。

  3. 与平均池化的对比(基于相同输入):

    池化类型输出矩阵特征保留倾向
    最大池化[[7,8], [9,7]]突出局部最大值
    平均池化[[4.5,4.5], [5.0,4.25]]反映区域平均水平

扩展场景

  • 重叠窗口(步长=1)
    输入4×4,窗口2×2,步长1 → 输出3×3:

    复制

    [[7, 8, 8],[9, 7, 6],[9, 7, 7]
    ]
  • 全局最大池化(窗口=输入尺寸)
    输入4×4 → 输出单个值 9

汇聚层中最大汇聚过程示例图如下:

最大池化通过保留局部窗口内的最大值,突出图像中的显著特征(如边缘、纹理),适合需要强特征响应的任务(如目标检测)。而平均池化更适合需要平滑特征分布的场景(如图像分类)。两者选择需根据具体任务需求权衡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36609.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 头文件说明

如果一个程序足够大,代码功能很多,可以想象,不可能把代码写在一个cpp文件里。我们需要模块化,这样的好处很多,方便分工合作,可读性提高,调用也方便。 这个要怎么做呢? 很简单直接当…

【蓝桥杯】省赛:分糖果(思维/模拟)

思路 数据很小,直接暴力模拟。 有意思的是一个列表如何当成循环队列写?可以arr[(i1)%n]让他右边超出时自动回到开头。 code import os import sysn int(input()) arr list(map(int,input().split()))ans 0 while 1:arr1 arr.copy()for i in range…

如何理解分布式光纤传感器?

关键词:OFDR、分布式光纤传感、光纤传感器 分布式光纤传感器是近年来备受关注的前沿技术,其核心在于将光纤本身作为传感介质和信号传输介质,通过解析光信号在光纤中的散射效应,实现对温度、应变、振动等物理量的连续、无盲区、高…

【java面型对象进阶】------继承实例

继承结构下的标准Javabean 代码如下: package demo10;//定义员工父类 public class Employee {private String id;private String name;private double salary;//构造方法public Employee(){}public Employee(String id,String name,double salary){this.idid;thi…

matrix-breakout-2-morpheus 靶机----练习攻略 【仅获取shell】

【此练习仅做到反弹shell】 1.靶机下载地址 https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova 2. 打开靶机,kali使用nmap扫描同C段的主机 找到靶机ip 确保靶机和kali网卡均为NAT模式 先查看kali的ip nmap 192.168.182.1/24 …

解锁MySQL 8.0.41源码调试:Mac 11.6+CLion 2024.3.4实战指南

文章目录 解锁MySQL 8.0.41源码调试:Mac 11.6CLion 2024.3.4实战指南前期准备环境搭建详细步骤安装 CLion安装 CMake 3.30.5准备 MySQL 8.0.41 源码配置 CMake 选项构建 MySQL 项目 调试环境配置与验证配置 LLDB 调试器启动调试验证调试环境 总结与拓展碰到的问题1.…

使用码云搭建CocoaPods远程私有库

一、创建远程私有索引库 用来存放私有框架的详细描述信息.podspec文件 1. 创建私有库 假设码云上创建的私有库为repo-spec 2. 查看本地已存在的索引库 pod repo list 3. 将远程私有索引库添加到本地 pod repo add [https://gitee.com/jingluoguo/repo-spec.git](https://gi…

Devops之AWS:如何安装AWS CLI

AWS 命令行界面(AWS CLI)是一种开源工具,让我们能够使用命令行 Shell 中的命令与 AWS 服务进行交互。 安装步骤: 下载并运行AWS CLI的MSI安装程序: 点击如下的链接,即可下载MSI安装程序: htt…

docker需要sudo才能使用

一种方法是添加当前用户到docker组里去,当时添加的时候貌似是没问题的,但是现在又不可以了 产生的报错 ❯ docker images Cannot connect to the Docker daemon at unix:///home/ying/.docker/desktop/docker.sock. Is the docker daemon running?解决…

jmeter将返回的数据写入csv文件

举例说明,我需要接口返回体中的exampleid与todoid的数据信息(使用边界提取器先将其提取),并将其写入csv文件进行保存 使用后置处理器BeanShell 脚本实例如下 import java.io.*;// 设置要写入的文件路径 String filePath "…

在线教育网站项目第四步:deepseek骗我, WSL2不能创建两个独立的Ubuntu,但我们能实现实例互访及外部访问

一、说明 上一章折腾了半天,搞出不少问题,今天我们在deepseek的帮助下,完成多个独立ubuntu24.04实例的安装,并完成固定ip,实践证明,deepseek不靠谱,浪费我2个小时时间,我们将在下面实…

Apache Paimon 在抖音集团多场景中的优化实践

资料来源:火山引擎-开发者社区 本文将基于抖音集团内部两大业务的典型实时数仓场景,介绍Paimon在抖音集团内部的生产实践。 作者:李明、苏兴、文杰 抖音集团大数据工程师 目前抖音集团内部主要使用 Lambda 架构进行实时数仓建设,其…

PDF Reader Pro for Mac v4.9.0 PDF编辑/批注/OCR/转换工具 支持M、Intel芯片

PDF Reader Pro 是一款用户必备的集管理、编辑、转换、阅读功能于一体的专业的全能PDF阅读专家。快速、易用、强大,让您出色完成 PDF 工作。 应用介绍 PDF Reader Pro,一款功能齐全且强大的PDF阅读和编辑软件。支持PDF阅读、批注、PDF编辑、PDF格式转换…

HTML5与CSS3新特性详解

一、HTML5新特性 1.概述 HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题,基本是 IE9 以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特…

shell 脚本搭建apache

#!/bin/bash # Set Apache version to install ## author: yuan# 检查外网连接 echo "检查外网连接..." ping www.baidu.com -c 3 > /dev/null 2>&1 if [ $? -eq 0 ]; thenecho "外网通讯良好!" elseecho "网络连接失败&#x…

Linux环境使用jmeter做性能测试

一、安装JDK,版本jdk1.8 1、下载压缩包到/jdk目录下解压 cd /jdk tar -zxvf jdk-8u241-linux-64.tar.gz 2、配置环境变量 在profile文件中末尾新增信息如下所示 vim /etc/profile export JAVA_HOME/usr/local/java/jdk/jdk1.8.0_221 export PATH$PATH:$JAVA_HOM…

巧用符号链接搬移C盘中的软件数据目录到其他盘

#工作记录 我们知道,在Windows11系统,有些软件是不能指定安装目录的,有些软件即使指定了安装目录可是在更新版本之后还是会安装到默认的C盘目录中(比如剪映),而且每次安装某些软件之后,这些软件…

Mysql的安装配置

目录 MySQL 简介 MySQL 的下载安装 mysql配置【默认以及下载好】 (1)配置环境变量 (2)修改配置文件 (3)以管理员身份运行cmd(一定要用管理员身份运行,不然权限不够) …

登山第二十梯:无人机实时自主探索——我是一只小小小鸟

文章目录 一 摘要 二 资源 三 内容 一 摘要 自主探索是无人机 (UAV) 各种应用的基本问题。最近,基于 LiDAR 的探索因其能够生成大规模环境的高精度点云地图而受到广泛关注。虽然点云本身就为导航提供了信息,但许多现有的勘探方…

基于FPGA轨道交通6U机箱CPCI脉冲板板卡

板卡简介: 本板为脉冲板,脉冲板主要执行CPU下达的指令,通过实现各种控制算法来调节PWM,然后输出光纤PWM信号来驱动变频器功率模块以达到控制电机的目的。 性能规格: 电源:DC5V;15V FPGA&…