深度学习:计算卷积神经网络中输出特征图尺寸的关键公式

ops/2024/11/19 6:03:18/

计算卷积神经网络中输出特征图尺寸的关键公式

在设计卷积神经网络(CNN)时,准确计算每个卷积层的输出特征图尺寸是至关重要的。这不仅关系到网络的结构设计,也直接影响参数优化和整体性能。适当的计算可以确保网络层正确连接,避免资源浪费,并优化性能。以下内容提供了详细的参数说明和计算过程,包括如何从期望的输出特征图尺寸反向推导所需的padding量。

核心公式及参数详解

卷积层的输出特征图尺寸 (H_{out}) 和 (W_{out}) 通常通过以下公式计算:

对于输出高度 ( H o u t H_{out} Hout ):
[ H o u t = ⌊ H i n + 2 × p a d d i n g [ 0 ] − d i l a t i o n [ 0 ] × ( k e r n e l _ s i z e [ 0 ] − 1 ) − 1 s t r i d e [ 0 ] + 1 ⌋ H_{out} = \left\lfloor \frac{H_{in} + 2 \times padding[0] - dilation[0] \times (kernel\_size[0] - 1) - 1}{stride[0]} + 1 \right\rfloor Hout=stride[0]Hin+2×padding[0]dilation[0]×(kernel_size[0]1)1+1 ]

对于输出宽度 ( $W_{out} $):
[ $W_{out} = \left\lfloor \frac{W_{in} + 2 \times padding[1] - dilation[1] \times (kernel_size[1] - 1) - 1}{stride[1]} + 1 \right\rfloor $]

参数详解
  • ( H i n H_{in} Hin), ( W i n W_{in} Win):分别代表输入特征图的高度和宽度。
  • ( p a d d i n g [ 0 ] padding[0] padding[0]), ( p a d d i n g [ 1 ] padding[1] padding[1]):分别在高度和宽度方向上的padding值,用于调整输入尺寸以适应特定的输出需求或操作边界条件。
  • ( d i l a t i o n [ 0 ] dilation[0] dilation[0]), ( d i l a t i o n [ 1 ] dilation[1] dilation[1]):在高度和宽度方向上的扩张率。扩张卷积通过在卷积核元素之间插入“空格”,增加其感受野,使得卷积核能覆盖更大的区域,而不增加额外的参数。
  • ( k e r n e l _ s i z e [ 0 ] kernel\_size[0] kernel_size[0]), ( k e r n e l _ s i z e [ 1 ] kernel\_size[1] kernel_size[1]):卷积核在高度和宽度方向上的尺寸,影响感受野的大小和参数数量。
  • ( s t r i d e [ 0 ] stride[0] stride[0]), ( s t r i d e [ 1 ] stride[1] stride[1]):步长定义了卷积核在输入特征图上移动时的间距,直接影响输出特征图的尺寸。

反向推导Padding

已知输入尺寸、卷积核尺寸、步长、扩张率以及目标输出尺寸时,可以通过以下方式计算所需的padding:

对于高度方向的padding ( p a d d i n g [ 0 ] padding[0] padding[0] ):
[ p a d d i n g [ 0 ] = ( ( H o u t − 1 ) × s t r i d e [ 0 ] + d i l a t i o n [ 0 ] × ( k e r n e l _ s i z e [ 0 ] − 1 ) + 1 − H i n ) / 2 padding[0] = \left(\left(H_{out} - 1\right) \times stride[0] + dilation[0] \times (kernel\_size[0] - 1) + 1 - H_{in}\right) / 2 padding[0]=((Hout1)×stride[0]+dilation[0]×(kernel_size[0]1)+1Hin)/2 ]

对于宽度方向的padding ( p a d d i n g [ 1 ] padding[1] padding[1] ):
[ p a d d i n g [ 1 ] = ( ( W o u t − 1 ) × s t r i d e [ 1 ] + d i l a t i o n [ 1 ] × ( k e r n e l _ s i z e [ 1 ] − 1 ) + 1 − W i n ) / 2 padding[1] = \left(\left(W_{out} - 1\right) \times stride[1] + dilation[1] \times (kernel\_size[1] - 1) + 1 - W_{in}\right) / 2 padding[1]=((Wout1)×stride[1]+dilation[1]×(kernel_size[1]1)+1Win)/2 ]

这些公式允许从期望的输出尺寸反向计算出必要的padding值,以确保输出尺寸符合设计规范。

示例

考虑一个输入特征图尺寸 ( H i n = 32 H_{in} = 32 Hin=32), ( W i n = 32 W_{in} = 32 Win=32),使用 ( 3 × 3 3 \times 3 3×3) 的卷积核,步长 ( 1 × 1 1 \times 1 1×1),无扩张( d i l a t i o n 为 1 dilation为1 dilation1),并需输出特征图尺寸也为 ( 32 × 32 32 \times 32 32×32) 的情况。

根据公式计算所需的padding:

[ p a d d i n g [ 0 ] = ( ( 32 − 1 ) × 1 + 1 × ( 3 − 1 ) + 1 − 32 ) / 2 = 1 padding[0] = \left(\left(32 - 1\right) \times 1 + 1 \times (3 - 1) + 1 - 32\right) / 2 = 1 padding[0]=((321)×1+1×(31)+132)/2=1 ]

[ p a d d i n g [ 1 ] = ( ( 32 − 1 ) × 1 + 1 × ( 3 − 1 ) + 1 − 32 ) / 2 = 1 padding[1] = \left(\left(32 - 1\right) \times 1 + 1 \times (3 - 1) + 1 - 32\right) / 2 = 1 padding[1]=((321)×1+1×(31)+132)/2=1 ]

这表明,为保持输出特征图的尺寸不变,每个方向需要添加 ( 1 × 1 1 \times 1 1×1) 的padding。

结论

通过准确应用和反向推导公式,可以精确控制CNN中的层输出尺寸,优化网络设计,确保达到预定的性能目标。这种方法不仅节省了调试时间,还提高了网络设计的效率和可预测性。


http://www.ppmy.cn/ops/134884.html

相关文章

Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系

一.什么是Spring?它解决了什么问题? 1.1什么是Spring? Spring,一般指代的是Spring Framework 它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代码…

11.12.2024刷华为OD-集合的使用,递归回溯的使用

文章目录 HJ41 集合的使用HJ43 迷宫问题--递归回溯的使用语法知识记录 HJ41 集合的使用 HJ43 迷宫问题–递归回溯的使用 def dfs(x, y, path, grid):n len(grid)m len(grid[0])if x n-1 and y m-1:for cor in path:print("({},{})".format(cor[0],cor[1]))# 判断…

html兼容性问题处理

文章目录 HTML5兼容性问题及解决方法1. 标签支持问题2. 兼容性检测3. 属性值支持问题4. 媒体支持问题5. Web API支持问题6. CSS兼容性问题7. 特定浏览器问题的解决方法 HTML5兼容性问题及解决方法 HTML5作为一种新的标记语言,虽然带来了许多新特性和改进&#xff0…

训练误差or测试误差与特征个数之间的关系--基于R语言实现

a 生成数据集,数据由 Y X β ϵ YX\beta\epsilon YXβϵ产生,其中 p 20 , n 1000 p20,n1000 p20,n1000 #way1 set.seed(1) p 20 n 1000 x matrix(rnorm(n*p), n, p) B rnorm(p) B[3] 0 B[4] 0 B[9] 0 B[19…

校园二手交易网站毕业设计基于SpringBootSSM框架

目录 一、引言 二、需求分析 2.1用户需求分析 2.1.1学生用户 2.1.2管理员 2.2系统功能需求 2.3系统非功能需求 ‌2.4技术需求 ‌2.4.1 技术选择 ‌2.4.2系统架构‌ 三、详细设计 3.1系统架构设计‌ ‌3.2前端设计‌ ‌3.3后端设计‌ ‌3.4数据库设计‌ 本文介绍…

C语言进阶3:字符串+内存函数

本章重点 求字符串长度 strlen 长度不受限制的字符串函数 strcpystrcatstrcmp 长度受限制的字符串函数 strncpystrncatstrncmp 字符串查找 strstrstrtok 误信息报告 strerror 字符操作 内存操作 memcpymemmovememcmpmemset 0.前言: C语言中对字符和字符串的…

Nature Communications 基于触觉手套的深度学习驱动视触觉动态重建方案

在人形机器人操作领域,有一个极具价值的问题:鉴于操作数据在人形操作技能学习中的重要性,如何有效地从现实世界中获取操作数据的完整状态?如果可以,那考虑到人类庞大规模的人口和进行复杂操作的简单直观性与可扩展性&a…

关于网络安全里蜜罐的详细介绍

蜜罐的定义 蜜罐的一个定义来自间谍世界,玛塔哈里 (Mata Hari) 式的间谍将恋爱关系用作窃取秘密的方式,被描述为设置“美人计”或“蜜罐”。经常会有敌方间谍中了美人计,然后被迫交待他/她所知道的一切。 在计算机安全方面,网络…