首页/新闻资讯/正文详情

FA_CNN卷积神经网络二十七---填充与步幅PyTorch

发布时间:2026/11/6 1:49:29 来源:云帆数科 栏目:资讯中心
FA_CNN卷积神经网络二十七---填充与步幅PyTorch
FAFormula and AlgorithmCNNConvolution Netural Network1. 引言在卷积神经网络中卷积核大小kernel size决定了感受野而**填充padding与步幅stride**则决定了卷积输出特征图的空间尺寸。合理设置这两个超参数既能控制输出分辨率也能影响计算量与信息保留程度。本文先讲清填充与步幅的原理再给出基于 PyTorch 的完整代码示例帮助读者快速验证输出形状。2. 填充Padding2.1 为什么需要填充如果不做填充每次卷积都会让特征图变小。以输入尺寸nh×nwn_h \times n_wnh​×nw​、卷积核kh×kwk_h \times k_wkh​×kw​为例输出尺寸为(nh−kh1)×(nw−kw1) (n_h - k_h 1) \times (n_w - k_w 1)(nh​−kh​1)×(nw​−kw​1)为了让卷积后的图像大小与原图保持一致通常会在输入四周补零这就是填充。2.2 输出尺寸公式设高度方向填充php_hph​行、宽度方向填充pwp_wpw​列则输出形状为(nh−khph1)×(nw−kwpw1) (n_h - k_h p_h 1) \times (n_w - k_w p_w 1)(nh​−kh​ph​1)×(nw​−kw​pw​1)当phkh−1p_h k_h - 1ph​kh​−1、pwkw−1p_w k_w - 1pw​kw​−1时输出尺寸与输入完全相同。2.3 为什么卷积核多为奇数实践中卷积核大小几乎都取奇数3×3、5×5原因有两点便于对称填充假设卷积核大小为k×kk \times kk×k为了让输出与原图同尺寸需要p(k−1)/2p (k-1)/2p(k−1)/2。只有当kkk为奇数时ppp才是整数可以在上下左右对称地填充。有明确的中心像素奇数卷积核存在唯一的中心位置便于描述以该像素为中心的邻域。当kkk为偶数时p(k−1)/2p (k-1)/2p(k−1)/2为浮点数只能一侧向上取整、另一侧向下取整即上下左右填充数量不对称实现上不够优雅。3. 步幅Stride步幅指卷积核在输入上滑动的步长。设高度步幅为shs_hsh​、宽度步幅为sws_wsw​则输出形状为⌊nh−khphshsh⌋×⌊nw−kwpwswsw⌋ \left\lfloor \frac{n_h - k_h p_h s_h}{s_h} \right\rfloor \times \left\lfloor \frac{n_w - k_w p_w s_w}{s_w} \right\rfloor⌊sh​nh​−kh​ph​sh​​⌋×⌊sw​nw​−kw​pw​sw​​⌋直观理解步幅为 1卷积核逐像素滑动输出分辨率较高计算量较大。步幅大于 1卷积核跳跃式滑动输出尺寸成比例缩小相当于在卷积中同时完成下采样可替代部分池化操作。4. 代码实践使用 PyTorch 框架下面通过一个辅助函数comp_conv2d统一验证不同参数下的输出形状。该函数在输入前补上批量大小与通道数两个维度卷积后再去掉便于直接观察二维结果。importtorchfromtorchimportnndefcomp_conv2d(conv2d,X):# conv2d 作为传参传进去在内部使用XX.reshape((1,1)X.shape)# 在维度前面加入通道数和批量大小Yconv2d(X)# 卷积处理是一个四维的矩阵returnY.reshape(Y.shape[2:])# 将前面两个维度拿掉Xtorch.rand(size(8,8))# 1) 在所有侧边填充 1 个像素输出尺寸不变conv2dnn.Conv2d(1,1,kernel_size3,padding1)print(comp_conv2d(conv2d,X).shape)# 2) 高度填充 2 行、宽度填充 1 列卷积核 5×3输出尺寸不变conv2dnn.Conv2d(1,1,kernel_size(5,3),padding(2,1))print(comp_conv2d(conv2d,X).shape)# 3) 将高度和宽度的步幅都设置为 2conv2dnn.Conv2d(1,1,kernel_size3,padding1,stride2)print(comp_conv2d(conv2d,X).shape)# 4) 一个稍微复杂的例子卷积核 3×5填充 (0,1)步幅 (3,4)conv2dnn.Conv2d(1,1,kernel_size(3,5),padding(0,1),stride(3,4))print(comp_conv2d(conv2d,X).shape)运行结果torch.Size([8, 8]) torch.Size([8, 8]) torch.Size([4, 4]) torch.Size([2, 2])4.1 结果解读场景卷积核填充步幅输出形状同尺寸卷积3×3(1,1)(1,1)8×8非方形核同尺寸5×3(2,1)(1,1)8×8步幅下采样3×3(1,1)(2,2)4×4复杂组合3×5(0,1)(3,4)2×2以第 4 个例子验证公式高度方向⌊(8−303)/3⌋2\lfloor (8 - 3 0 3) / 3 \rfloor 2⌊(8−303)/3⌋2宽度方向⌊(8−514)/4⌋2\lfloor (8 - 5 1 4) / 4 \rfloor 2⌊(8−514)/4⌋2与输出2×2一致。5. 总结填充用于控制输出尺寸p(k−1)/2p (k-1)/2p(k−1)/2时输出与输入同尺寸这也是卷积核普遍取奇数的原因。步幅用于成倍缩小输出尺寸可替代池化完成下采样。二者可以分别对高度和宽度独立设置PyTorch 中通过padding(p_h, p_w)、stride(s_h, s_w)传入元组即可。记住输出尺寸公式就能在搭建网络时快速推算每一层的特征图大小避免维度不匹配的问题。

相关推荐

10.30实习:了解电容
10.30实习:了解电容

焊接高通率板学习到了新知识:陶瓷电容,它是没有正负极的对于正常的电容来说,具有正负极贴片电容,常常带有色带的就是负极,比如:铝电解电容但是,钽电容的顶部色带是正极!!… · 2026/11/6 1:49:29

TSMaster中如何自定义27服务的安全算法?
TSMaster中如何自定义27服务的安全算法?

第一找到下面这个文件然后用Visual Studio 2022打开红色框是要实现的算法(可自定义),然后点击本地Window调试器,生成dll文件即可。注意:如果生成的文件是下面是文本文件(.log),并不是… · 2026/11/6 1:48:29

alertmanger 告警rule文件配置(三)
alertmanger 告警rule文件配置(三)

#案例2##服务器磁盘监控 groups: #----------------------------------生成环境--------------------------------------------------- name: ProdApplication1_disk_alertsrules:- alert: ProdApplication1_disk_usage_too_High # node_filesystem_avail_bytes{mountpo… · 2026/11/6 1:48:29

粗糙度测试方法比对,WLI、LSCM、AFM该如何选择?
粗糙度测试方法比对,WLI、LSCM、AFM该如何选择?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:56:31

第一章 DRM 子系统概述:1.4命令提交的硬件模型
第一章 DRM 子系统概述:1.4命令提交的硬件模型

1.3 节说明了 GPU 在系统中的位置、内存的访问路径与地址翻译。本节说明命令如何从 CPU 到达 GPU ,并概述新一代 GPU 的硬件调度机制,不涉及软件以何种方式使用这些机制。内容不针对特定厂商,因此不讨论各厂商的寄存器与命令包格式。 1. 硬件… · 2026/11/6 1:56:31

Java 智慧物业管理系统源码:SpringBoot + Vue3 + MySQL 全栈实战(含小程序、门禁、巡检、收费)
Java 智慧物业管理系统源码:SpringBoot + Vue3 + MySQL 全栈实战(含小程序、门禁、巡检、收费)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:56:31

OpenFOAM CFD 工作站选型指南:内存带宽、核心数与网格规模的匹配法则
OpenFOAM CFD 工作站选型指南:内存带宽、核心数与网格规模的匹配法则

摘要:首届 OpenFOAM HPC Challenge(OHC-1)汇集了多平台实测数据,其强扩展性分析给出两条对工作站选型极具价值的结论:单节点内性能受共享内存总线争用(内存带宽)限制;跨节点后 MPI 通… · 2026/11/6 1:56:31

用 JMeter 压测的环境安装部署
用 JMeter 压测的环境安装部署

压测环境搭建的核心难点,往往不在于“把 JMeter 跑起来”,而在于确保压测机本身不会成为瓶颈,并且采集到的数据是可信的。一个常见的误区是:单机 GUI 模式跑得很顺手,就认为环境已经就绪;结果到了正式压测&… · 2026/11/6 1:56:31

Cesium 剖切盒、剖切平面、BIM 剖面查看
Cesium 剖切盒、剖切平面、BIM 剖面查看

原理说明 Cesium 原生剖切核心:ClippingPlaneCollection,给 Cesium3DTileset.clippingPlanes 赋值,GPU 片元 discard 实现裁切Cesium。 ClippingPlane(normal, distance):Hessian 平面方程;法线 normal 指向的一侧保… · 2026/11/6 1:55:31

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

三菱PLC数据采集到数据库的时序设计:Python+MC协议实战
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

ASIC主模式RTL设计:状态机与三态驱动的流片级实现
ASIC主模式RTL设计:状态机与三态驱动的流片级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

STM32嵌入式C++开发:GDB调试与Renode仿真实战指南
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码