简明易懂——卷积神经网络的输入输出特征图大小计算

Pytorch学习笔记(五)——CNN中卷积和池化操作后的特征图大小计算方法 一、卷积操作 注意:卷积操作需要向下取整 假设: 设输入图像尺寸为WxW,卷积核尺寸为FxF,步幅为S,填充为P,经过该卷积层后输出的图像尺寸为NxN,计算公式为: N=W−F+2PS+1 N=\cfrac {W-F+2P} {S}+1 N=SW−F+2P​+1 设输入图像尺寸为WxH,卷积核的尺寸为FxF,步幅为S,图像深度(通道数)为C,填充为P,则: W=W−F+2PS+1 W=\cfrac {W-F+2P} {S}+1 W=SW−F+2P​+1 H=H−F+2PS+1 H=\cfrac {H-F+2 阅读详情
AI摘要

本文深入介绍了卷积神经网络(CNN)的基础知识,包括卷积层和池化层的计算公式,以及多输入通道、多输出通道和批量操作的处理方式。此外,还讲解了飞桨PaddlePaddle和PyTorch中的卷积API,如`paddle.fluid.dygraph.Conv2D`和`torch.nn.Conv2d`,并详细阐述了相关参数的含义。通过对卷积计算过程的解析,帮助读者理解CNN的工作原理。

📖 参考文档:《百度飞浆:零基础入门深度学习》


假设输入图片尺寸是 H × W H \times W H×W,卷积核(池化窗口)大小为 k h × k w k_h \times k_w kh​×kw​

  • 卷积层: 假设填充为 ( p h , p w ) (p_h, p_w) (ph​,pw​),步幅为 ( s h , s w ) (s_h, s_w) (sh​,sw​),则卷积层输出特征图的大小为:
    H o u t = H + 2 p h − k h s h + 1 H_{out} = \frac{H + 2p_h - k_h}{s_h} + 1 Hout​=sh​H+2ph​−kh​​+1
    W o u t = W + 2 p w − k w s w + 1 W_{out} = \frac{W + 2p_w - k_w}{s_w} + 1 Wout​=sw​W+2pw​−kw​​+1
图1:步幅为2的卷积过程

  • 池化层: 假设在第一行之前填充 p h 1 p_{h1} ph1​ 行,在最后一行后面填充 p h 2 p_{h2} ph2​ 行。在第一列之前填充 p w 1 p_{w1} pw1​ 列,在最后一列之后填充 p w 2 p_{w2} pw2​ 列,则池化层输出特征图大小为:
    H o u t = H + p h 1 + p h 2 − k h s h + 1 H_{out} = \frac{H + p_{h1} + p_{h2} - k_h}{s_h} + 1 Hout​=sh​H+ph1​+ph2​−kh​​+1
    W o u t = W + p w 1 + p w 2 − k w s w + 1 W_{out} = \frac{W + p_{w1} + p_{w2} - k_w}{s_w} + 1 Wout​=sw​W+pw1​+pw2​−kw​​+1

    在卷积神经网络中,通常使用 2 × 2 2\times2 2×2 大小的池化窗口,步幅也使用 2,填充为 0,则输出特征图的尺寸为:
    H o u t = H 2 H_{out} = \frac{H}{2} Hout​=2H​
    W o u t = W 2 W_{out} = \frac{W}{2} Wout​=2W​


图2:平均池化

多输入通道、多输出通道和批量操作

前面介绍的卷积计算过程比较简单,实际应用时,处理的问题要复杂的多。例如:对于彩色图片有RGB三个通道,需要处理多输入通道的场景。输出特征图往往也会具有多个通道,而且在神经网络的计算中常常是把一个批次的样本放在一起计算,所以卷积算子需要具有批量处理多输入和多输出通道数据的功能,下面将分别介绍这几种场景的操作方式。

  • 多输入通道场景

    上面的例子中,卷积层的数据是一个 2 维数组,但实际上一张图片往往含有 RGB 三个通道,要计算卷积的输出结果,卷积核的形式也会发生变化。假设输入图片的通道数为 C i n C_{in} Cin​,输入数据的形状是 C i n × H i n × W i n C_{in} \times H_{in} \times W_{in} Cin​×Hin​×Win​,计算过程如 图3 所示。
    3

  1. 对每个通道分别设计一个 2 维数组作为卷积核,卷积核数组的形状是 C i n × k h × k w C_{in} \times k_{h} \times k_{w} Cin​×kh​×kw​。
  2. 对任一通道 c i n ∈ [ 0 , C i n ) c_{in} \in [0, C_{in}) cin​∈[0,Cin​),分别用大小为 k h × k w k_{h} \times k_{w} kh​×kw​ 的卷积核在大小为 H i n × W i n H_{in}\times{W_{in}} Hin​×Win​ 的二维矩阵上做卷积。
  3. 将这 C i n C_{in} Cin​ 个通道的计算结果相加,得到的是一个形状为 H o u t × W o u t H_{out}\times{W_{out}} Hout​×Wout​ 的二维矩阵。
  • 多输出通道场景

    一般来说,卷积操作的输出特征图也会具有多个通道 C o u t C_{out} Cout​,这时我们要设计 C o u t C_{out} Cout​ 个维度为 C i n × k h × k w C_{in}\times{k_h}\times{k_w} Cin​×kh​×kw​ 的卷积核,卷积核数组的维度是 C o u t × C i n × k h × k w C_{out}\times C_{in}\times{k_h}\times{k_w} Cout​×Cin​×kh​×kw​,如 图4 所示。
    4

  1. 对任一输出通道 c o u t ∈ [ 0 , C o u t ) c_{out} \in [0, C_{out}) cout​∈[0,Cout​),分别使用上面描述的形状为 C i n × k h × k w C_{in}\times{k_h}\times{k_w} Cin​×kh​×kw​ 的卷积核对输入图片做卷积。
  2. 将这 C o u t C_{out} Cout​ 个形状为 H o u t × W o u t H_{out}\times{W_{out}} Hout​×Wout​ 的二维数组堆叠在一起,形成维度为 C o u t × H o u t × W o u t C_{out}\times{H_{out}}\times{W_{out}} Cout​×Hout​×Wout​ 的三维数组。

说明: 通常将卷积核的输出通道数叫做卷积核的个数。

  • 批量操作

    在卷积神经网络的计算中,通常将多个样本放在一起形成一个 mini-batch 进行批量操作,即输入数据的维度是 N × C i n × H i n × W i n N\times{C_{in}}\times{H_{in}}\times{W_{in}} N×Cin​×Hin​×Win​。由于会对每张图片使用同样的卷积核进行卷积操作,卷积核的维度与上面多输出通道的情况一样,仍然是 C o u t × C i n × k h × k w C_{out}\times C_{in}\times{k_h}\times{k_w} Cout​×Cin​×kh​×kw​,输出特征图的维度是 N × C o u t × H o u t × W o u t N\times{C_{out}}\times{H_{out}}\times{W_{out}} N×Cout​×Hout​×Wout​,如 图5 所示。
    5

飞桨 PaddlePaddle 和 PyTorch 卷积 API 介绍

飞桨卷积算子对应的 API 是 paddle.fluid.dygraph.Conv2D,PyTorch 卷积算子对应 API 是 torch.nn.Conv2d,常用的参数如下:

PaddlePaddle APIPyTorch API注释
num_channelsin_channels(int) - 输入图像的通道数
num_flitersout_chanels(int) - 卷积核的个数,和输出特征图通道数相同,相当于上文中的 C o u t C_{out} Cout​
filter_sizekernel_size(int | tuple) - 卷积核大小,可以是整数,比如 3,表示卷积核的高和宽均为 3 ;或者是两个整数的 list,例如 [3, 2] ,表示卷积核的高为 3,宽为 2
stridestride(int | tuple) - 步幅,可以是整数,默认值为 1,表示垂直和水平滑动步幅均为 1;或者是两个整数的 list,例如 [3, 2],表示垂直滑动步幅为 3,水平滑动步幅为 2
paddingpadding(int | tuple) - 填充大小,可以是整数,比如 1,表示竖直和水平边界填充大小均为 1;或者是两个整数的 list,例如 [2, 1],表示竖直边界填充大小为 2,水平边界填充大小为 1

输入数据维度 [ N , C i n , H i n , W i n ] [N, C_{in}, H_{in}, W_{in}] [N,Cin​,Hin​,Win​] ,输出数据维度 [ N , n u m _ f i l t e r s , H o u t , W o u t ] [N, num\_filters, H_{out}, W_{out}] [N,num_filters,Hout​,Wout​],权重参数 w w w 的维度 [ n u m _ f i l t e r s , C i n , f i l t e r _ s i z e _ h , f i l t e r _ s i z e _ w ] [num\_filters, C_{in}, filter\_size\_h, filter\_size\_w] [num_filters,Cin​,filter_size_h,filter_size_w],偏置参数 b b b 的维度是 [ n u m _ f i l t e r s ] [num\_filters] [num_filters]。

卷积神经网络特征图大小的计算 前言 特征图大小计算式卷积神经网络中一个很基础的问题,也是一个必须理解的问题。卷到最后我们要知道提取的特征的维度的大小,所以我们必须知道,卷积后特征图的大小。这里我们讲解一下卷积的不同方式以及特征图大小计算的公式。 基本公式 width = [(W - F + 2P) + 1] / S height = [(H - F + 2P) + 1] / S 其中,W:矩阵宽,H:矩阵高,F:卷积核宽和... 阅读详情

相关推荐

卷积神经网络系列之卷积/池化后特征图大小怎么计算??

1.卷积后的大小: W:矩阵宽,H:矩阵高,F:卷积核宽和高,P:padding(需要填充的0的个数),N:卷积核的个数,S:步长 width:卷积后输出矩阵的宽,height:卷积后输出矩阵的高 width = (W - F + 2P)/ S + 1 height = (H - F + 2P) / S + 1 当conv2d(), max_pool() 中的 padding=SAME时,width=W,height=H,则保证输入输出尺寸图片大小相等,当padding=‘valid’时,P=0,相当于不填

橙子Blue不加冰 1万+

理解卷积神经网络CNN中的特征图 feature map

         一直以来,感觉 feature map 挺晦涩难懂的,今天把初步的一些理解记录下来。参考了斯坦福大学的机器学习公开课和七月算法中的机器学习课。        CNN一个牛逼的地方就在于通过感受野和权值共享减少了神经网络需要训练的参数的个数。总之,卷积网络的核心思想是将:局部感受野、权值共享(或者权值复制)以及时间或空间亚采样这三种结构思想结合起来获得了某种程度的位移、尺度、形变不...

denghe优快云的博客 5万+

卷积网络中输出大小计算

参考链接: https://www.cnblogs.com/wmr95/articles/8134234.html 1. 经过卷积层后输出大小的计算公式: O=(I−K+2P)/S+1 O = (I-K+2P)/S +1 O=(I−K+2P)/S+1 其中, 输出大小为O×OO\times OO×O, 输入大小为I×II\times II×I, K表示卷积核大小(kernel_size), S表示步长(stride), P表示padding. 例: 卷积层的输入shape为[32, 3, 224, 224

zhao2018110980的博客 1897

卷积神经网络中特征图大小计算公式总结

W:输入特征图的宽,H:输入特征图的高,K:卷积核宽和高,Ppadding(需要填充的0的个数),N:卷积核的个数,S:步长width_out:卷积后输出特征图的的宽,height_out:卷积后输出特征图的高。

L888666Q的博客 1万+

CNN 感受野计算公式

Calculating Receptive Field of CNN 感受野指的是一个特定的 CNN 特征(特征图上的某个点)在输入空间所受影响的区域。一个感受野可以用中信位置和打表来表征。然而,对于一个 CNN 特征来说,感受野中的每一个像素值并不是同等重要。一个像素点越接近感受野中心,它对输出特征的计算所起作用越大。这意味着某一个特征不仅仅是受限在输入图片中某个特定的区域(感受野),并且...

DexterLei 1万+

正常卷积与空洞卷积输出特征图与感受野大小的计算

空洞卷积的计算过程 空洞卷积(Dilated convolutions)在卷积的时候,会在卷积核元素之间塞入空格,如下图所示: 空洞卷积过程,蓝色表示输入,绿色表示输出 这里引入了一个新的超参数 d,(d - 1) 的值则为塞入的空格数,假定原来的卷积核大小为 k,那么塞入了 (d - 1) 个空格后的卷积核大小 n 为: 进而,假定输入空洞卷积的大小为 i,步长 为 s ,空洞卷积后特征图大...

qq_43232545的博客 7358

超详细的卷积后大小的计算公式

计算公式定义 定义几个参数 输入图片大小 W×W 卷积核大小 F×F 步长 S padding的像素数 P 于是我们可以得出计算公式为: N = (W − F + 2P )/S+1 输出图片大小为 N×N 以resnet50为例,输入为[1,3,224,224],其中1为batchsize,3为通道数,224为height和width。 经过第一层卷积后,其大小为[1,64,112,112] in_channels= 3//输入通道 out_channels= 64 //输出通道 nn.Conv2d(in_

Mr_WHITE2的博客 4万+

【模型解读】【代码复现】Segment Anything Model(SAM)

Meta AI的一个新的人工智能模型,只需一次点击就能 "分割出 "任何图像中的任何物体! SAM是一个可提示的分割系统,对不熟悉的物体和图像具有zero-shot的概括性,并且不需要额外的训练。

lalula的博客 2万+

卷积神经网络CNN/Pytorch,如何理解特征图Feature map?

基础详解,卷积神经网络/Pytorch,如何理解特征图Feature map?

MengYa_Dream的博客 2万+

数分实战(01):Global_Superstore数据集解析与商业洞察

本文以Global_Superstore零售数据集为例,手把手指导数据分析实战全流程。从数据清洗、探索性分析到深度商业洞察,详细解析了如何通过Python处理缺失值与异常值,进行销售利润分析、客户细分与地理分析,并探讨了折扣与利润的微妙关系。文章旨在帮助读者建立数据分析思维框架,从数据中挖掘可指导实际业务决策的核心洞察。

weixin_28487433的博客 343

【实战解析】Ubuntu双网卡冲突:如何解决同一网段下网关无法访问及上网问题

本文深入解析Ubuntu服务器双网卡配置在同一网段时引发的路由冲突问题,导致网关无法ping通及无法上网。通过分析路由表与Metric值原理,提供使用route命令调整优先级及修改Netplan配置文件的实战解决方案,确保主次路由明确,一劳永逸解决网络冲突。

f9g0h的博客 282

卷积计算,反卷积计算,特征图大小计算,空洞卷积计算

转自:https://www.jianshu.com/p/09ea4df7a788?utm_source=oschina-app 卷积计算过程(单/RGB多通道) 特征图大小计算公式 转置卷积(反卷积)计算过程 空洞卷积计算过程 卷积计算过程(单/RGB多通道) 假设输入层的大小为 5 x 5,局部感受野(或称卷积核)的大小为 3 x 3,那么输出层一个神经元所对应的计算过程(下文...

别说话写代码的博客 2万+

电子系统设计与创新实践作品:简易电子琴

题目 4:简易电子琴 (1)具有8个音阶按键,每个音阶按键频率如表1所示。 (2)每个按键对应LED显示。 (3)音阶信号经功放连接8欧姆扬声器,输出功率可达1W。 (4)每个音阶输出音量一样。 (5)扬声器输出音量可调节,音量调节分为高、中、低三档,并进行档位显示。

weixin_47510497的博客 2858

CNN卷积神经网络中的stride、padding、channel以及特征图尺寸的计算

CNN卷积神经网络中的stride、padding、channel以及特征图尺寸的计算1. stride步幅2. padding填充3. channel通道4. 计算及例子总结: 1. stride步幅 stride:卷积时的采样间隔 设置步幅的目的是希望减小输入参数的数目,减少计算量。stride参数的值就是缩小的倍数,比如步幅为2,就对输入的特征图做2倍下采样,注意步幅并不代表输出时输入的1stride\frac{1}{stride}stride1​ 2. padding填充 padding:在输入特

m0_54487331的博客 2万+

LabVIEW内存优化实战:用DVR和队列高效处理大型数组,告别数据副本

本文深入探讨LabVIEW内存优化技术,重点介绍数据值引用(DVR)和单元素队列(SEQs)在高效处理大型数组中的应用。通过对比传统方法与现代引用技术的性能差异,提供减少内存副本、提升程序效率的实战方案,帮助开发者在测试测量、图像处理等数据密集型场景中实现显著性能提升。

weixin_30835649的博客 1061

EMS案例:BMS传导发射超标整改案例

BMS作为新能源汽车的关键部件,其EMC性能直接影响整车的安全性和可靠性。本文通过一个实际的传导发射整改案例,详细展示了从问题定位、分析到解决方案实施的全过程。希望这些经验能够为从事类似产品设计的工程师提供有价值的参考,在未来的产品开发中避免类似问题,设计出更加可靠、稳定的BMS产品。EMC设计是一门结合理论与实践的艺术,只有通过不断积累经验、深入理解电磁场理论,并紧密结合实际应用场景,才能在复杂的电磁环境中设计出鲁棒性强的电子产品。

m0_56451176的博客 272

CNN中调整特征图大小的操作总结

在深度学习中,CNN经常要调整特征图的大小,本文对一些常用的方法。 一,利用卷积核的步进(stride)调整大小 下采样:在padding='same’时,卷积后的特征图大小变为原图/strides,特征图变小,称之为下采样。 Conv2D(filters, kernel_size, strides=strides, padd...

qq_43258953的博客 6528

Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-差分信号

Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-单端信号详细介绍了单端信号如何进行TDR仿真分析,下面介绍如何对差分信号进行TDR分析,还是以下图为例进行分析。Impedance是时域阻抗曲线,也是最主要的观测指标,注意:impedance曲线的时间刻度不是延时,延时=时间刻度/2,因为TDR测量的是用一来一回的原理去测量的。Use Lossy peeling 默认不勾选,勾选的话代表同时仿真无损和有损方案,不勾选代表仅仿真有损方案。

weixin_54787054的博客 857

CNN中张量的输入形状和特征图 | Pytorch系列(三)

点击上方“AI算法与图像处理”,选择加"星标"或“置顶”重磅干货,第一时间送达文 |AI_study今天是《高效入门Pytorch》的第三篇文章,上一篇我们讲解到《深度学...

zero的博客 8482

把 SAP S/4HANA 中的 Maintain Email Templates 用好:从模板维护、语言变体、业务绑定到传输治理的完整实践

摘要:SAP邮件模板管理常被低估,实则关乎审批通知、业务提醒等关键输出。官方推荐通过复制标准模板实现自定义,而非直接修改标准内容,以保持核心稳定。模板维护涉及语言变体、业务绑定、数据传输等治理环节,需业务顾问与开发团队协作确保字段来源与渲染逻辑。实施时需注意Fiori配置、权限分配及传输管理,避免测试与生产环境差异。模板设计应平衡灵活性与复杂度,遵循分层测试策略(内容、数据、流程),并建立命名规范以维护资产清晰度。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 68

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

可视化CNN和特征图

通过可视化CNN不同层的特征图,可以更好地理解网络在处理图像时“看到”的是什么。例如,第一层可能会学习简单的特征,如边缘和角落,而后面的层可能会学习更抽象的特征,如特定物体的存在。通过查看特征图,我们还可以识别图像中对网络决策过程重要的区域。作者:Ahzam Ejaz。

deephub 5568

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

卷积运算和运算后特征图大小计算2

every blog every motto: I am a slow walker, but i never walk backwards. 0. 前言 主要讲下实际卷积运算中关于padding=same和padding=valid的输出特征图的大小,以及池化后特征图的大小。 1. 正文 1. 卷积运算 特别说明:卷积(除不尽)向下取整!!!! 特别说明:卷积(除不尽)向下取整!!!! 特别说明...

胡侃有料的博客 3701

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

CNN张量输入形状和特征图

张量

fantasygwh2015的博客 1326

PyTorch - 06 - CNN张量形状说明:卷积神经网络和特征图

PyTorch - 06 - CNN张量形状说明:卷积神经网络和特征图Convolutional Neural NetworkShape Of A CNN InputImage Height And Width图像色彩通道Image BatchesNCHW vs NHWC vs CHWN输出通道和特征图Feature Maps总结 Convolutional Neural Network 在此神经网络编程系列中,我们正在努力构建卷积神经网络(CNN),因此让我们看一下CNN的张量输入。 在最后两篇文章中,

weixin_48367136的博客 1886

如何简单理解CNN卷积神经网络

如何快速简单理解卷积神经网络(CNN) CNN卷积神经网络常用于图像识别分类的训练,对图像分类具有很好的适应性。 一张图片,通常是由成千上万个像素点组成的,如下: 卷积神经网络,需要理解以下三点: 什么是卷积运算 什么是reLU运算 什么是pooling 下面一一介绍。 卷积运算 怎么运算的 卷积运算就是将原始图片的与特定的Feature Detector(filter)做卷积运算(符号⊗)...

UESTC Like 7650
上一篇: 手把手教你解决 Git 冲突——微软 GitHub 课程
下一篇: 我的图床~
Skr.B
博客等级 码龄8年 1103粉丝 81原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Skr.B

WUHOOO~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值