深度学习入门基础CNN系列——填充(padding)与步幅(stride)

简介: 深度学习入门基础之填充和步幅相关知识点~

填充(padding)

在这里插入图片描述
在上图中,输入图片尺寸为$3\times3$,输出图片尺寸为$2\times2$,经过一次卷积之后,图片尺寸为$2\times2$,经过一次卷积之后,图片尺寸变小。卷积输出特征图的尺寸计算方法如下(卷积核的高和宽分别为$k_h和k_w$):

$$ H_{out}=H-k_h+1\\ W_{out}=W-k_w+1 $$

如果输入尺寸为4,卷积核大小为3时,输出尺寸为$4-3+1=2$。读者可以自行检查当输入图片和卷积核为其他尺寸时,上述计算式是否成立。当卷积核尺寸大于1时,输出特征图的尺寸会小于输入图片尺寸。如果经过多次卷积,输出图片尺寸会不断减小。为了避免卷积之后图片尺寸变小,通常会在图片的外围进行填充(padding),如下图所示
在这里插入图片描述

  • 如图(a)所示:填充的大小为1,填充值为0。填充之后,输入图片尺寸从$4\times4$变成了$6\times6$,使用$3\times3$的卷积核,输出图片尺寸为$4\times4$。
  • 如图(b)所示:填充的大小为2,填充值为0。填充之后,输入图片尺寸从$4\times4$变成了$8\times8$,使用$3\times3$的卷积核,输出图片尺寸为$6\times6$。

如果在图片高度方向,在第一行之前填充$p_{h1}$行,在最后一行之后填充$p_{h2}$行;在图片的宽度方向,在第1列之前填充$p_{w1}$列,在最后1列之后填充$p_{w2}$列;则填充之后的图片尺寸为$(H+p_{h1}+p_{h2})\times (W+p_{w1}+p_{w2})$。经过大小为$k_h\times k_w$的卷积核操作之后,输出图片的尺寸为:

$$ H_{out}=H+p_{h1}+p_{h2}-k_h+1\\ W_{out}=W+p_{w1}+p_{w2}-k_w+1 $$

在卷积计算过程中,通常会在高度或宽度的两侧采取==等量填充==,即$p_{h1}=p_{h2}=p_h,p_{w1}=p_{w2}=p_w$,所以上面的公式就变为了:

$$ H_{out}=H+2p_h-k_h+1\\ W_{out}=W+2p_w-k_w+1 $$

卷积核大小通常使用1,3,5,7这样的奇数,如果使用的填充大小为$p_h=(k_h-1)/2,p_w=(k_w-1)/2$,则卷积之后图像尺寸不变。
例如当卷积核大小为3时,padding大小为1,卷积之后图像尺寸不变,与图(a)一样;同理,如果卷积核大小为5,padding大小为2,也能保持图像尺寸不变。

步幅(stride)

Alt
上图中卷积核每次滑动一个像素点,这是步幅为1的特殊情况,下面两张图是步幅为2的卷积过程,卷积核在图片上移动时,每次移动大小为2个像素点。
Alt
在这里插入图片描述
以第二张静态图为例子:
当宽和高的步幅分别为$s_h和s_w$时,输出特征图尺寸的计算公式是:

$$ H_{out}=\frac{H+2p_{h}-k_h}{s_h}+1\\ W_{out}=\frac{W+2p_w-k_w}{s_w}+1 $$

假设输入图片尺寸时$H\times W=100\times100$,卷积核大小为$k_h\times k_w=3\times3$,填充$p_h=p_w=1$,步幅为$s_h=s_w=2$,则输出特征图的尺寸为:

$$ H_{out}=\frac{100+2-3}{2}+1=50\\ W_{out}=\frac{100+2-3}{2}+1=50 $$

总结:

1。卷积输出特征图的尺寸计算方法如下(卷积核的高和宽分别为$k_h和k_w$): $$ H_{out}=H-k_h+1\
W_{out}=W-k_w+1 $$
2。当宽和高的步幅分别为$s_h和s_w$时,输出特征图尺寸的计算公式是:

$$ H_{out}=\frac{H+2p_{h}-k_h}{s_h}+1\\ W_{out}=\frac{W+2p_w-k_w}{s_w}+1 $$

相关文章
|
27天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第7天】本文将深入探讨卷积神经网络(CNN)的基本原理,以及它如何在图像识别领域中大放异彩。我们将从CNN的核心组件出发,逐步解析其工作原理,并通过一个实际的代码示例,展示如何利用Python和深度学习框架实现一个简单的图像分类模型。文章旨在为初学者提供一个清晰的入门路径,同时为有经验的开发者提供一些深入理解的视角。
|
2天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
12天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第21天】本文旨在深入探讨深度学习领域的核心组成部分——卷积神经网络(CNN)。通过分析CNN的基本结构、工作原理以及在图像识别、语音处理等领域的广泛应用,我们不仅能够理解其背后的技术原理,还能把握其在现实世界问题解决中的强大能力。文章将用浅显的语言和生动的例子带领读者一步步走进CNN的世界,揭示这一技术如何改变我们的生活和工作方式。
|
19天前
|
机器学习/深度学习 人工智能 监控
深入理解深度学习中的卷积神经网络(CNN):从原理到实践
【10月更文挑战第14天】深入理解深度学习中的卷积神经网络(CNN):从原理到实践
58 1
|
2天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第32天】本文将介绍深度学习中的一个重要分支——卷积神经网络(CNN),以及其在图像识别领域的应用。我们将通过一个简单的代码示例,展示如何使用Python和TensorFlow库构建一个基本的CNN模型,并对其进行训练和测试。
|
7天前
|
机器学习/深度学习 自然语言处理 TensorFlow
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第26天】在这篇文章中,我们将深入探讨卷积神经网络(CNN)的基本原理、结构和应用。CNN是深度学习领域的一个重要分支,广泛应用于图像识别、语音处理等领域。我们将通过代码示例和实际应用案例,帮助读者更好地理解CNN的概念和应用。
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习入门案例:运用神经网络实现价格分类
深度学习入门案例:运用神经网络实现价格分类
|
15天前
|
机器学习/深度学习 人工智能 自动驾驶
深入理解深度学习中的卷积神经网络(CNN)
【10月更文挑战第18天】深入理解深度学习中的卷积神经网络(CNN)
26 0
|
20天前
|
机器学习/深度学习 编解码 算法
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
28 0
|
23天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)
【10月更文挑战第10天】深入理解深度学习中的卷积神经网络(CNN)
113 0

热门文章

最新文章