卷积网络中激活/特征映射维度的约束



假设中间 CNN 层的输入大小为 512×512×128,在卷积层中,我们在步幅 2 处应用 48 个 7×7 过滤器,没有填充。我想知道生成的激活图的大小是多少?

我检查了一些以前的帖子(例如,这里或这里(指向这个斯坦福课程页面。那里给出的公式是 (W − F + 2P(/S + 1 = (512 - 7(/2 + 1,这意味着这种设置是不可能的,因为我们得到的值不是整数。

但是,如果我在 Python 2.7 中运行以下代码片段,代码似乎表明激活映射的大小是通过 (512 - 6(/2 计算的,这是有道理的,但与上面的公式不匹配:

>>> import torch
>>> conv = torch.nn.Conv2d(in_channels=128, out_channels=48, kernel_size=7, stride=2, padding=0)
>>> conv
Conv2d(128, 48, kernel_size=(7, 7), stride=(2, 2))
>>> img = torch.rand((1, 128, 512, 512))
>>> out = conv(img)
>>> out.shape
(1, 48, 253, 253)

任何有助于理解这个难题的帮助都是值得赞赏的。

这是 pytorch 中使用的公式: conv2d(转到shape部分(

另外,据我所知,这是关于这个主题的最佳教程。

奖励:这是一个用于卷积计算的整洁可视化工具。