深度学习入门基础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 $$

相关文章
|
25天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
8天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
28 3
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
53 7
|
14天前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
18 1
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
本文旨在通过深入浅出的方式,为读者揭示卷积神经网络(CNN)的神秘面纱,并展示其在图像识别领域的实际应用。我们将从CNN的基本概念出发,逐步深入到网络结构、工作原理以及训练过程,最后通过一个实际的代码示例,带领读者体验CNN的强大功能。无论你是深度学习的初学者,还是希望进一步了解CNN的专业人士,这篇文章都将为你提供有价值的信息和启发。
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
|
21天前
|
机器学习/深度学习 人工智能 网络架构
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
37 1
|
23天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。
|
24天前
|
机器学习/深度学习 人工智能 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
25 1