深度学习|表示学习|卷积神经网络|输出维度公式如何理解?|16

server/2025/1/31 14:18:09/

如是我闻: 当我们对输入图像进行卷积时,输出的宽度和高度可以通过以下公式计算:

输出大小 = 输入大小 − 卷积核大小 + 2 ⋅ 填充大小 步长 + 1 \text{输出大小} = \frac{\text{输入大小} - \text{卷积核大小} + 2 \cdot \text{填充大小}}{\text{步长}} + 1 输出大小=步长输入大小卷积核大小+2填充大小+1
池化(Pooling)的输出大小公式类似卷积,但更加简单:

输出大小 = 输入大小 − 池化窗口大小 步长 + 1 \text{输出大小} = \frac{\text{输入大小} - \text{池化窗口大小}}{\text{步长}} + 1 输出大小=步长输入大小池化窗口大小+1

下面让我们用一个直观的例子来加深一下对输出大小的理解


想象一个操场和一块跳格子布

  1. 操场是输入图片

    • 假设操场很大,我们把它分成一格一格的方块,像下图:
      操场(输入图片):
      [□ □ □ □ □]
      [□ □ □ □ □]
      [□ □ □ □ □]
      [□ □ □ □ □]
      [□ □ □ □ □]
      

    这里有 5 × 5 5 \times 5 5×5 的方块。我们要用“跳格子布”来覆盖操场的一部分并“滑动”,看我们可以跳多少次。

  2. 跳格子布是池化窗口

    • 比如,我们的跳格子布是 3 × 3 3 \times 3 3×3 的大小,它长这样:
      跳格子布(池化窗口):
      [■ ■ ■]
      [■ ■ ■]
      [■ ■ ■]
      

    跳格子布每次能覆盖 3 × 3 3 \times 3 3×3 的区域。

  3. 滑动是步长

    • 每次把跳格子布从操场上向右移动。比如:
      • 如果步长是 1,就往右挪 1 格;
      • 如果步长是 2,就往右挪 2 格。
  4. 规则:只要跳格子布还在操场范围内,就可以跳一次


公式背后的意义

我们想知道这个跳格子布能跳多少次(输出的大小)?
公式告诉我们:
跳的次数 = 操场的大小 − 跳格子布的大小 每次滑动的距离 + 1 \text{跳的次数} = \frac{\text{操场的大小} - \text{跳格子布的大小}}{\text{每次滑动的距离}} + 1 跳的次数=每次滑动的距离操场的大小跳格子布的大小+1


一个直观的例子

假设:
  • 操场大小 5 × 5 5 \times 5 5×5
  • 跳格子布大小 3 × 3 3 \times 3 3×3
  • 步长是 1(每次跳格子布只往右挪 1 格)。
按公式计算:
  • 操场的大小是 5,跳格子布的大小是 3,步长是 1。

  • 横着跳的次数:
    5 − 3 1 + 1 = 3 \frac{5 - 3}{1} + 1 = 3 153+1=3
    所以跳格子布在每一行可以跳 3 次。

  • 纵着跳的次数也一样:
    5 − 3 1 + 1 = 3 \frac{5 - 3}{1} + 1 = 3 153+1=3
    所以总的输出大小是 ( 3 \times 3 )。

画出来:

跳格子布的位置会是:

  • 第一次跳:
    [■ ■ ■ □ □]
    [■ ■ ■ □ □]
    [■ ■ ■ □ □]
    
  • 第二次跳:
    [□ ■ ■ ■ □]
    [□ ■ ■ ■ □]
    [□ ■ ■ ■ □]
    
  • 第三次跳:
    [□ □ ■ ■ ■]
    [□ □ ■ ■ ■]
    [□ □ ■ ■ ■]
    

换一个更大的步长

如果步长变成 2 呢?

  • 横着跳的次数:
    5 − 3 2 + 1 = 2 \frac{5 - 3}{2} + 1 = 2 253+1=2
    所以跳格子布在每一行可以跳 2 次。

  • 纵着跳的次数:
    5 − 3 2 + 1 = 2 \frac{5 - 3}{2} + 1 = 2 253+1=2
    所以总的输出大小是 2 × 2 2 \times 2 2×2

画出来:

跳格子布的位置会是:

  • 第一次跳:
    [■ ■ ■ □ □]
    [■ ■ ■ □ □]
    [■ ■ ■ □ □]
    
  • 第二次跳:
    [□ □ □ ■ ■]
    [□ □ □ ■ ■]
    [□ □ □ ■ ■]
    

公式的本质

  1. 操场有多大(输入图片的大小)。
  2. 跳格子布有多大(池化窗口的大小)。
  3. 每次挪动多远(步长)。

公式计算的,就是跳格子布在操场上可以跳多少次(输出大小)。
更大、更密的跳格子布会减少能跳的次数,步长越大,跳的次数也会减少。


为什么有“+1”?

问题:

当滑动窗口从左上角开始往右或往下移动时,滑动的次数按距离计算。如果没有 “+1”,只会计算窗口滑动了几次完整步长,但不会考虑窗口的起始位置

公式分成两部分:
1. ( 输入大小 − 窗口大小 ) / 步长 (\text{输入大小} - \text{窗口大小}) / \text{步长} (输入大小窗口大小)/步长:计算滑动窗口最多滑动多少步。
2. “+1”:表示滑动窗口的初始位置也算一次覆盖(因为滑动窗口最开始就覆盖了输入的一部分)。


举个具体例子

假设:
  • 输入大小是 5 5 5 长度为 5 的操场)。
  • 窗口大小是 3 3 3(跳格子布的长度为 3)。
  • 步长是 1 1 1(每次跳格子布挪动 1 格)。

如果没有 “+1”
输入大小 − 窗口大小 步长 = 5 − 3 1 = 2 \frac{\text{输入大小} - \text{窗口大小}}{\text{步长}} = \frac{5 - 3}{1} = 2 步长输入大小窗口大小=153=2
这表示跳格子布只能跳 2 次

但实际上,我们可以从 起点 开始跳,跳格子布覆盖输入的最左侧,这是第 1 次覆盖。
然后向右挪动覆盖第 2 格,接着挪动覆盖第 3 格。
总共 3 次

因此需要 “+1” 来补上初始位置,公式变为:
输入大小 − 窗口大小 步长 + 1 = 3 \frac{\text{输入大小} - \text{窗口大小}}{\text{步长}} + 1 = 3 步长输入大小窗口大小+1=3


再换一个例子(步长 > 1 的情况)

假设:
  • 输入大小是 6 6 6
  • 窗口大小是 ( 3 );
  • 步长是 ( 2 )。

如果没有 “+1”:
6 − 3 2 = 1.5 \frac{6 - 3}{2} = 1.5 263=1.5
这里结果是小数,表示跳了 1.5 次,显然不合理。

考虑加上起始位置:
6 − 3 2 + 1 = 2 \frac{6 - 3}{2} + 1 = 2 263+1=2
表示窗口在起点覆盖一次,然后滑动覆盖第 2 次,符合逻辑。


总的来说:

公式的本质就是在问:一个小窗口(池化窗口)在一个大图(输入)里,可以覆盖多少个位置?

“+1” 的意义:
  • 当我们计算滑动窗口的次数时,公式 ((\text{输入大小} - \text{窗口大小}) / \text{步长}) 只算了窗口能滑动的次数,而没有把窗口的初始位置计算进去。
  • “+1” 就是为了补上窗口覆盖输入时的第一个位置。

以上


http://www.ppmy.cn/server/163810.html

相关文章

31【api接口】

api接口大家可能听过,但是不知道具体是什么,本节将来为大家解答这个问题 我们在开发中可能会需要用到很多功能,但是我们不想或者能力上无法开发,如果这个功能需要的人比较多的话,便会有第3方去完成开发,我…

Day27-【13003】短文,什么是栈?栈为何用在递归调用中?顺序栈和链式栈是什么?

文章目录 第三章栈和队列总览第一节栈概览栈的定义及其基本操作如何定义栈和栈的操作?合理的出栈序列个数如何计算?栈的两种存储方式及其实现?顺序栈及其实现,还有对应时间复杂度*、清空栈,初始化栈5、栈空&#xff0c…

PDF 擦除工具

该软件仅仅适用于非人民币玩家,如果有wps会员等类似的软件的没有大用处 PDF Eraser允许用户擦除PDF文件中任何元素,并且支持添加文本和图像。除此之外PDF Eraser允许用户删除不必要的PDF页面,为了兼顾一些大型的扫描的PDF文档,PDF…

深度学习|表示学习|卷积神经网络|输出维度公式|15

如是我闻: 在卷积和池化操作中,计算输出维度的公式是关键,它们分别可以帮助我们计算卷积操作和池化操作后的输出大小。下面分别总结公式,并结合解释它们的意义: 1. 卷积操作的输出维度公式 当我们对输入图像进行卷积时…

2025年美赛数学建模B题管理可持续旅游

美国阿拉斯加的朱诺市拥有约 3 万人口,并在 2023 年以 1.6 人的收入增长 百万邮轮乘客,在最繁忙的日子里接待多达 7 艘大型游轮 大约 2 万名游客。 [1] 虽然这些游客为 在 3.75 亿美元的 [2] ,他们还带来了有关过度拥挤的问题,…

【MySQL】初始MySQL、库与表的操作

目录 基本使用 使用案例 SQL分类 存储引擎 库的操作 字符集和校验规则 查看系统默认字符集和校验规则 查看数据库支持的字符集 查看数据库支持的字符集校验规则 指定编码常见数据库 校验规则对数据库的影响 操纵数据库 库的备份与恢复 表的操作 创建表 查看表 …

leetcode——对称二叉树(java)

给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 解题方法:&#xff08…

【Block总结】PConv,部分卷积|即插即用

论文信息 标题: Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks 论文链接: https://arxiv.org/pdf/2303.03667 GitHub链接: https://github.com/JierunChen/FasterNet 创新点 该论文的核心创新在于提出了一种新的运算符——部分卷积(PCo…