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

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万+

机器学习【学校智慧食堂及其应用】

本文主要介绍机器学习【智慧食堂及其应用】

qq_201729558 2572

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

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

MengYa_Dream的博客 2万+

中文顶刊《会计研究》文本分析技术最新进展总结盘点

会计研究》是由中华人民共和国财政部主管、中国会计学会主办的国家一级学术期刊,为会计领域中文顶级期刊。随着大数据技术的日益成熟, 社交网络类文本 、上市公司披露类文本、媒体报道类文本、 其他类文本 、网络搜索数据、P2P 网络借贷文 本与分析师报告等文本数据逐渐成为财务会计的研究素材。

qq_52891550的博客 2893

WPS集成DeepSeek最新教程,附详细图文,让文案生成更智能

本文将为大家详细介绍如何将 DeepSeek 功能集成到 WPS 中,通过 OfficeAI 插件,你无需进行复杂的本地部署,只需通过官网连接即可快速启用 DeepSeek 强大的 AI 功能。不论是文案生成、翻译校对,还是深度推理、决策支持,DeepSeek 都能为你提供便捷的解决方案。让我们一起来看看如何操作吧!

Java徐师兄的博客 6万+

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

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

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

Python 爬虫 + 数据分析:社会调查数据抓取与结果可视化分析

在当今数字化时代,数据已成为推动社会发展的关键资源之一。无论是市场调研、学术研究还是政策制定,社会调查数据都扮演着至关重要的角色。通过 Python 爬虫技术,我们可以高效地获取这些数据,并结合数据分析与可视化工具,深入挖掘数据背后的价值。本文将通过一个完整的实战项目,带你掌握如何使用 Python 爬虫抓取社会调查数据,并进行可视化分析。

yansideyucsdn的博客 126

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万+

借助AI搞定国社科“研究内容”部分!用Gemini 3 Pro轻松撰写6大模块,让基金本子效率质量更上一层楼

所谓研究整体框架,是对课题研究逻辑结构与技术路径的系统阐述,其核心在于通过研究目标分解、研究内容模块化与研究方法整合,构建一个层次清晰、逻辑严密、科学可行的研究体系。撰写要求:1)分要点、分层次列出主要研究内容,保持各部分之间的逻辑性、层次性与系统性;研究可行性可理解为开展本课题在理论基础、研究方法、研究条件、人员结构、平台支撑及外部协作等方面的可实施程度,可从内部条件与外部条件两个维度进行系统论证。研究背景为:我正在申报xxx年xxx(项目名称),课题名称为:xxx,拟采用的主要研究方法包括:xxx等;

智能AI让学术科研更容易 964

ADS基础教程24 - Gerber文件的导入

一、引言二、基本概念1.仿真文件下载2.仿真文件介绍二、导入步骤1.新建workspace2.选择Layout结构3.导入设计4.选择文件类型5.导入文件6.预览文件内容7.铜皮离散问题四、总结选择。通过本文章结束,可以了解ADS中如何将导入Gerber文件,并且对导入的铜皮进行合并。下一步就针对导入的文件进行层叠设置和编辑。END!}}END!

XZ_ZC的博客 3056

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

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

qq_43258953的博客 6528

FAST-LIVO2 源码精读(十八):实时性优化、漂移排查与工程落地

FAST-LIVO2 的工程价值,不在于某一个孤立的技巧,而在于它把"激光的几何精度、惯性的高频预测、视觉的纹理与色彩"用一套简洁的滤波框架紧紧拧在一起,又在实时性、鲁棒性、可扩展性之间取得了难得的平衡。先用内建计时表定位瓶颈,再按降采样、并行、滑窗、编译优化、双频输出逐项加速;遇到漂移先看现象、循诊断树定位根因、回到对应章节取解法。十八篇至此收束。

PX4-SLAM-PNC 218

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

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

zero的博客 8482

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

可视化CNN和特征图

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

deephub 5568

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

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

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

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

胡侃有料的博客 3701

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

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、付费专栏及课程。

余额充值