卷积或池化后的特征图尺寸计算

博客介绍了卷积层或池化层后图像尺寸的计算方法。设输入图像尺寸为W,卷积核尺寸为F,步幅为S,Padding为P,通用公式是(W - F + 2P)/ S + 1。还分别阐述了Padding为‘SAME’和‘VALID’时的输出尺寸计算,并给出验证用例。
部署运行你感兴趣的模型镜像

设输入图像尺寸为W,卷积核尺寸为F,步幅为S,Padding使用P,则经过卷积层或池化层之后的图像尺寸为(W-F+2P)/S+1。
1、如果 Padding=‘SAME’,with zero paddding,则输出尺寸为: W / S(结果向上取整);
验证用例(输入为257,卷积核尺寸为3X3,步幅为2):
在这里插入图片描述
验证结果:
在这里插入图片描述
由上可见结果为129,满足W / S(结果向上取整)。
2、如果 Padding=‘VALID’,without padding,输出尺寸为:(W - F + 1) / S(结果向上取整)。
验证用例(输入为257,卷积核尺寸为3X3,步幅为2):
在这里插入图片描述
验证结果:
在这里插入图片描述
由上可见结果为128,满足(W - F + 1) / S(结果向上取整)。

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

你的问题非常有深度,也非常关键:**池化卷积计算输出尺寸时,确实使用了相同的公式**。这是因为在底层实现上,它们本质上都是“滑动窗口”操作。 --- ## ✅ 回答: 是的,**池化层和卷积层在计算输出特征图尺寸时,使用的是完全相同的公式**,因为它们都属于**滑动窗口操作**(sliding window operation)。 --- ## 📐 输出尺寸计算公式(卷积 & 池化通用) 对于输入尺寸为 `(H_in, W_in)` 的特征图,经过一个窗口大小为 `kernel_size`,步长为 `stride`,边缘填充为 `padding` 的操作后,输出特征图的空间尺寸 `(H_out, W_out)` 为: $$ H_{out} = \left\lfloor \frac{H_{in} + 2 \times \text{padding} - \text{kernel\_size}}{\text{stride}} \right\rfloor + 1 $$ $$ W_{out} = \left\lfloor \frac{W_{in} + 2 \times \text{padding} - \text{kernel\_size}}{\text{stride}} \right\rfloor + 1 $$ --- ## 🧠 为什么池化卷积使用相同公式? 因为它们的底层操作机制是一样的: | 操作类型 | 是否学习参数 | 窗口操作 | 是否降维 | 输出尺寸计算方式 | |----------|---------------|-----------|------------|-------------------| | 卷积 | 是 | 是 | 可以 | 相同公式 | | 池化 | 否 | 是 | 可以 | 相同公式 | - **卷积**:滑动窗口进行加权求和; - **池化**:滑动窗口进行统计操作(如最大值、平均值); - **窗口大小、步长、填充**都会影响输出尺寸; - 所以,它们的输出尺寸公式是一样的; --- ## 🧪 示例:卷积池化输出尺寸对比 ### 1. 卷积层输出尺寸计算 ```python import torch import torch.nn as nn conv = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, stride=2, padding=1) input = torch.randn(1, 3, 6, 6) output = conv(input) print(output.shape) # 输出:torch.Size([1, 16, 3, 3]) ``` 计算: $$ H_{out} = \left\lfloor \frac{6 + 2 \times 1 - 3}{2} \right\rfloor + 1 = \left\lfloor \frac{5}{2} \right\rfloor + 1 = 2 + 1 = 3 $$ --- ### 2. 池化层输出尺寸计算 ```python pool = nn.MaxPool2d(kernel_size=2, stride=2, padding=0) input = torch.randn(1, 3, 6, 6) output = pool(input) print(output.shape) # 输出:torch.Size([1, 3, 3, 3]) ``` 计算: $$ H_{out} = \left\lfloor \frac{6 + 2 \times 0 - 2}{2} \right\rfloor + 1 = \left\lfloor \frac{4}{2} \right\rfloor + 1 = 2 + 1 = 3 $$ --- ## ✅ 总结 | 特性 | 说明 | |------|------| | 公式一致 | 池化卷积的输出尺寸公式一致 | | 原因 | 都是滑动窗口操作,窗口大小、步长、填充影响输出 | | 不同点 | 卷积有参数学习,池化没有 | | 应用 | 卷积提取特征,池化下采样,减少计算量 | --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值