深度学习--卷积运算输出尺寸计算

卷积层输出大小尺寸计算 padding的两种方式 “SAME” 和 “VALID”,padding = “SAME”时,会在图像的周围填 “0”,padding = “VALID”则不需要,即 P=0。padding = “SAME”: kernel_size=1时,P=0;kernel_size=3时,P=1;kernel_size=5时,P=2,以此类推。一般会选“SAME”,以来减缓图像变小的速度,二来防止边界信息丢失(即有些图像边界的信息发挥作用较少)。长宽不等时,卷积之后的计算公式也是如此,只需分别计算即可。 阅读详情

CNN处理图片的时候,原图片经过卷积之后尺寸会发生变化,本文总结了卷积之后图片尺寸的变化规律。

1、图片的宽和高在卷积过程中的尺寸变化规律是一致的,因此用W\times W的图片来分析,卷积核的尺寸为F\times F,两个方向上的步长均为S,补零的数量(padding)为P,这里的P是在某一维度上总的padding数量。

如下图中绿色部分是图片,黄色部分是padding,因此下图所示的图片尺寸是6\times 6,padding数量P在水平维度上等于2,在垂直维度上也等于2。

2、两个方向上的步长均为S,输出图片的宽和高相等,如下所示:

W_{output}=ceil(\frac{W+P-F+1}{S})

ceil表示向上取整

3、在tensorfow的tf.nn.conv2d方法中,padding有两种模式,"VALID"和"SAME",

(1)  "VALID"模式下,P=0,使用前面叙述的方法计算输出的尺寸。
(2)  "SAME"模式下首先会进行补零操作,然后再卷积。

"SAME"模式卷积输出的尺寸为:

W_{output}=ceil(\frac{W}{S})

补零的数量为:

P=max((W_{output}-1)\times S+F-W,0)

将上面的式子综合可以得到补零数量的计算式如下所示:

P=max((ceil(\frac{W}{S})-1)\times S+F-W,0)

然后根据前面叙述的方法计算输出的尺寸。

4、如果在左右两边补零总数是偶数,那么左右补零数量相等,如果补零的总数是奇数,那么右侧补零比左侧多一个,同理当上下总共补零为奇数的时候,下侧补零数量比上侧多一个。

例如对6\times 6的矩阵宽和高方向分别补3个零,那么补零之后的矩阵应该是下面的样子,绿色部分是图片,黄色部分是padding。

5、"VALID"和"SAME"输出尺寸一样的情况

当图片尺寸为10\times 10,卷积核为2\times 2,步长为2

(1) 在"VALID"模式下,根据前面的公式可以得知输出的尺寸为5\times 5

W_{output}=ceil(\frac{10+0-2+1}{2})=5

(2) 在"SAME"模式下,根据前面的公式计算得知输出尺寸也是5\times 5

W_{output}=ceil(\frac{10}{2})=5

需要补零的数量为:

P=max((ceil(\frac{10}{2})-1)\times 2+2-10,0)=0

下面在tensorflow中验证这两种模式的输出是否一致,从输出可以看出"SAME"和"VALID"的输出确实是一样的。

# tensorflow1.8.0    
import tensorflow as tf
import numpy as np

np.random.seed(12)
data = np.random.rand(1,10,10,1)
a = tf.constant(data,dtype=tf.float32)
b = tf.ones([2,2,1,1],dtype=tf.float32)
c1 = tf.nn.conv2d(a,b,strides=[1,2,2,1],padding="SAME")
c2 = tf.nn.conv2d(a,b,strides=[1, 2, 2, 1], padding="VALID")
with tf.Session() as sess:
    print(sess.run(c1).squeeze())
    print(sess.run(c2).squeeze())


# 输出
[[1.7841241 2.5940151 1.4568073 1.9715514 2.0230098]
 [1.8155621 1.5641888 2.5562458 2.8798828 1.8806615]
 [2.212563  1.8042688 1.3643253 1.415138  0.9652648]
 [2.4231486 1.7592132 2.2874975 1.6366189 2.1969295]
 [2.8632264 3.191011  2.286504  2.7619777 1.2597685]]
[[1.7841241 2.5940151 1.4568073 1.9715514 2.0230098]
 [1.8155621 1.5641888 2.5562458 2.8798828 1.8806615]
 [2.212563  1.8042688 1.3643253 1.415138  0.9652648]
 [2.4231486 1.7592132 2.2874975 1.6366189 2.1969295]
 [2.8632264 3.191011  2.286504  2.7619777 1.2597685]]
卷积网络中输出大小计算 参考链接: 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 阅读详情

相关推荐

卷积神经网络

卷积神经网络 创建日期 星期五 15 三月 2019 卷积神经网络的特点在于卷积; 通俗的来说卷积就是局部扫描,然后进行训练识别,将一个图像卷积,从原来的n维矩阵进行折叠,进行降维操作,然后对其进行全连接加权,池化层等 Layers used to build ConvNets 卷积神经网络通常包含以下几种层: 卷积层(Convolutional layer),卷积神经网路中每层卷积...

konstantin的博客 1005

常见卷积尺寸计算

在搭配深度学习多个卷积层时我们经常要计算卷积层的输出张量的尺寸大小,可以用如下公式计算: 1, 公式 卷积层输出尺寸: o = ?(i + 2p - k) / s? + 1 式中,i:输入尺寸;o:输出尺寸;p:padding;k: kernel_size;s: stride。?…?表示向下取整。 2, 推导过程 这个公式不用死记,下面我用非常便于理解的方法描述这个推导。卷积就是对相邻的一片数据进行加权求和得到一个数的一种“合并”操作,将此操作对输入张量进行滑动扫描以得到输出张量。循着这个过程,我们很容易推

qq_36302310的博客 1万+

【CV】卷积和逆卷积(转置卷积)详解

【CV】卷积和逆卷积(转置卷积)详解

Danger的博客 4360

卷积尺寸计算公式(含膨胀卷积和反卷积情况)

在搭配深度学习多个卷积层时我们经常要计算卷积层的输出张量的尺寸大小,可以用如下公式计算: 1, 公式 卷积层输出尺寸: o = ⌊(i + 2p - k) / s⌋ + 1 式中,i:输入尺寸;o:输出尺寸;p:padding;k: kernel_size;s: stride。⌊…⌋表示向下取整。 2, 推导过程 这个公式不用死记,下面我用非常便于理解的方法描述这个推导。卷积就是对相邻的一片数据进行加权求和得到一个数的一种“合并”操作,将此操作对输入张量进行滑动扫描以得到输出张量。循着这个过程,我们很容易推

Brikie的博客 3万+

图解卷积运算:从单通道到多通道的保姆级教程(附计算公式)

本文通过图解和手算示例,详细讲解了卷积运算从单通道到多通道的核心原理。内容涵盖滑动窗口思想、步长与填充的作用、输出尺寸计算公式,并提供了NumPy实现代码,是深度学习入门者理解卷积神经网络基础概念的保姆级教程。

salt9的博客 866

一文读懂,WMS仓库管理系统模块功能

对于仓库管理人员来说,仓储管理是一件需要十分负责、又精细化的工作。

深蓝易网的博客 5216

【深度学习】【入门】卷积层

卷积层是CNN的核心组件,主要通过卷积核进行特征提取。卷积核作为小型滤波器,通过滑动计算提取局部特征(如边缘、纹理),其参数通过训练学习得到。卷积运算涉及输入图像与卷积核的逐点相乘求和,生成特征图。为控制输出尺寸和保留边缘信息,引入了填充(Padding)和步幅(Stride)概念。通道(Channel)处理多维度数据,如RGB图像的三个颜色通道。PyTorch中的nn.Conv2d模块实现卷积层,参数包括输入/输出通道数、卷积核大小、步幅、填充等,支持不同类型的卷积操作。通过合理设置这些参数,可以优化模型

2401_86886401的博客 1670

银河麒麟V10 SP3系统下如何安全安装gcc-toolset-10(附yum仓库避坑指南)

本文详细介绍了在银河麒麟V10 SP3系统中安全部署gcc-toolset-10的完整方案。核心在于通过配置默认禁用的yum仓库(如EPKL仓库)并配合--enablerepo参数进行精准安装,有效规避依赖冲突风险,实现与系统默认GCC 7.3的稳定共存。文章还提供了多版本环境切换、系统维护及故障排查的实用指南,确保操作的可控与可逆。

h0i1j2k3l的博客 587

一篇文章教你搞懂卷积

卷积运算的核心原理包括单通道和多通道的计算方式。单通道卷积通过3×3卷积核对5×5图像滑动计算,输出3×3特征图。多通道卷积时,输入与卷积核通道数必须一致,各通道独立计算后相加,输出通道数由卷积核个数决定。填充(Padding)可控制输出尺寸并保留边缘信息,步幅(Stride)则实现空间降采样。关键设计参数包括卷积核尺寸、填充、步幅和输出通道数,共同影响输出尺寸和特征提取效果。多核卷积能融合空间特征与通道信息,而大步幅是减少计算量的有效手段。

weixin_73958875的博客 1021

【ros】ROS1的安装和相关使用方法

主要学习ros相关内容

Greary的博客 2376

短信验证码逻辑漏洞学习——各种绕过姿势技巧

短信验证码逻辑漏洞学习——各种绕过姿势技巧

记录并分享学习安全的知识点.. 2555

深度学习32:卷积神经网络:卷积层(卷积运算,填充,步幅)

可以看到,4×4 的数据进行幅度为 1 的填充后形状变为 6×6,再经过卷积后数据的形状为 4×4。使用填充主要目的是为了调整输出数据的形状大小,避免多次卷积后数据形状大小过小导致无法继续进行卷积运算。在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0),这称为填充(padding)。将各个位置上卷积核的元素和输入的对应元素相乘,然后再求和(也称为乘积累加运算、矩阵的内积)。当输出大小无法除尽时,PyTorch 卷积层会自动向下取整,输出整数尺寸,舍弃无法覆盖完整卷积核的输入部分。

tellmewhoisi的博客 161

rk3568 修改开机动画

bootanimation.zip是一个Android设备启动时播放的动画文件,它包含了一系列的图片和描述文件,用于描述动画的播放顺序和持续时间。

weixin_35723192的博客 2726

【深度学习】卷积计算后输出维度计算方法

卷积运算 深度学习中,利用卷积核对图片提取特征已经十分常用且普遍,本文介绍经过卷积运算后的输出维度计算方法。 卷积输出维度计算 已知: 假设输入的图片尺寸:A x A 卷积核大小:K 步长Stride:S Padding大小:P 求解: 输出的embedding维度B:B = (A + 2*P - K) / S + 1 逐步理解: A + 2*P (size + 2 * padding) ===> 将原图片拓展 A + 2*P - K ===> 根据卷积核大小把最后一个抛掉 (A + 2*

杨小浩浩的博客 1万+

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

我哎GIS博客 814

cesium实战目录必看

本文作者长期从事GIS相关工作,专注于三维和地图可视化领域,熟悉Cesium、Three.js、WebGL等开发框架。文章目录展示了作者在Cesium应用中的多项技术实践,涵盖水面反射、离屏渲染、后处理效果、地形裁剪、Shader着色器、动态单体化、气象图、缓冲区域、坡度和坡向分析、三维热力图、通视分析、态势标绘等多个方面。这些内容为开发者提供了丰富的技术参考,展示了Cesium在三维可视化中的强大功能和应用场景。

God's asylum的博客 8718

【神经网络】经过卷积核的filter维度计算公式

输入:15×13,经过3×3的卷积核 ,stride为2的卷积之后 输出:6×6  即 ((15-3)/stride+1)   ×  ((13-3)/stride+1) = 6  × 6  

zkq_1986的博客 3349

1、基于改进3D卷积神经网络的阿尔茨海默病分类

本文提出了一种基于改进3D卷积神经网络的阿尔茨海默病(AD)分类方法,利用3D CNN对预处理后的T1加权MRI数据进行空间特征提取,并在VGG网络结构中引入类似ResNet的跳跃连接以缓解模型退化和过拟合问题。实验基于ADNI数据集,包含AD、MCI和NC三类样本,结果表明改进后的3D VGG模型在AD/NC、MCI/NC及多分类任务中均取得了优异性能,尤其在AD/MCI/NC分类中准确率达到98.50%,优于现有典型3D深度学习方法。研究验证了3D CNN在脑部疾病诊断中的有效性,并为AD的早期识别提供

kk1234的博客 89

卷积核运算

步长:步长为几,每次卷积核就移动几格。步长越大,提取特征越稀疏,生成的特征图越小,运算量更小。压缩信息,减小输出尺寸,就需要较大的步长。经过卷积,图像逐渐变小。卷积核本质上是一个小型的矩阵(如3×3、5×5等),在处理数据时,它会与输入数据的局部区域进行卷积运算(即逐元素相乘后求和)。padding填充:padding为1,图像周围填充1个像素(四周多加一层)。每个通道分别卷积运算并求和,一个卷积核与输入卷积得到一个单通道输出。不同时,要分别代入宽、高计算。多个卷积核叠加构成卷积层。

2401_87649757的博客 489

android 蓝牙通讯demo

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

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

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

深度学习中卷积与互相关

1. 互相关运算 (cross-correlation)2. 卷积运算 (convolution) 卷积公式: 数学定义的卷积运算: Y[m,n]=∑i=0Hk−1∑j=0Wk−1X[m+i,n+j]⋅Kflipped[i,j]Y[m,n] = \sum_{i=0}^{H_k-1} \sum_{j=0}^{W_k-1} X[m+i, n+j] \cdot K_{\text{flipped}}[i,j]Y[m,n]=i=0∑Hk​−1​j=0∑Wk​−1​X[m+i,n+j]⋅Kflipped​[i,j]其中

xinxiangwangzhi_的博客 983

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

nn.Conv2d参数详解及输入特征图尺寸的计算

kernel_size:卷积核的大小,通常为正方形,可以是单个整数表示正方形大小,也可以是一个元组(tuple)表示不同宽度和高度的大小,如 (3, 5) 表示宽度为 3 个像素,高度为 5 个像素的卷积核;需要注意的是,卷积层的参数选择也会影响特征图的大小。比如,在使用大尺寸的卷积核进行卷积时,会使得特征图的尺寸减小,而使用小尺寸的卷积核则会使得特征图的尺寸增加。其中,W 表示输入特征图的宽度,H 表示输入特征图的高度,K 表示卷积核的大小,P 表示 padding 的大小,S 表示卷积核的步幅。

蜗牛在奔跑的博客 1万+

卷积步长(strided convolutions)

来源:Coursera吴恩达深度学习课程 卷积中的步长(strided convolutions)是另一个构建卷积神经网络的基本操作,具体看下面一个例子。 如果你想用3×3的过滤器卷积这个7×7的图像,和之前不同的是,我们把步幅设置成了2。第一次计算你还和之前一样取左上方的3×3区域的元素的乘积,再加起来,最后结果为2×3 + 6×1 + 3×(-1) + 3×4 + 6×0 + 4×0 + 7×4 + 9×2 + 8×3 =91。第二次计算注意一下左上角(蓝色圆圈),这个点移动到其后两格的点,跳.

csdn_xmj的博客 9336

03-手动实现卷积

在这个例子中我们只是简单的进行了卷积操作,输出1通道的特征图,而在卷积网络之中,我们会经常涉及到通道映射的操作,若想实现此操作,只需要初始化对应通道数的卷积核即可,如想将32×256×256的特征图映射到64×H×W,我们可以初始化64×32×H_×W_个卷积核进行卷积。投影到输出特征图:将结果值填充到输出特征图的相应位置上,输出特征图形状由输出通道数、步幅和填充方式决定。滑动卷积核:卷积核在输入特征图上滑动,对输入数据的每个位置进行元素乘法操作并求和,得到一个输出标量值。

JM的博客 624

PyTorch 卷积层的使用

PyTorch的卷积层的使用介绍。

weixin_43276033的博客 464

深度学习以及卷积基础

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达作者:石文华编辑:龚 赛介 绍深度学习是机器学习的一个分支,是基于数据来学习表示数据的一组算法。下面我们列出...

小白学视觉 316

卷积神经网络(CNN)的计算理解

卷积核再向下移动一格。

qq_45408329的博客 160
上一篇: C#调用matlab编译的DLL
下一篇: 基于opencv,face_recognition和Face++的人脸位置检测
__Destiny__
博客等级 码龄9年 27粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值