【发布时间】:2019-12-16 16:14:13
【问题描述】:
假设 CNN 中间层的输入大小为 512×512×128,在卷积层中,我们在步长 2 处应用 48 个 7×7 过滤器,没有填充。我想知道生成的激活图的大小是多少?
我检查了一些以前的帖子(例如,here 或 here)指向 this 斯坦福课程页面。并且给出的公式是 (W - F + 2P)/S + 1 = (512 - 7)/2 + 1,这意味着这种设置是不可能的,因为我们得到的值不是整数。
但是,如果我在 Python 2.7 中运行以下 sn-p,代码似乎表明激活图的大小是通过 (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)
感谢您对理解这个难题的任何帮助。
【问题讨论】:
标签: python machine-learning conv-neural-network pytorch