正如在cs231n讲座之一中提到的那样,AlexNet体系结构中存在一些计算错误。图像的初始大小必须为227x227,而不是本文中提到的224x224。我想知道ZFNet的论文中也有类似的问题吗? machine-learning - 再犯错误?验证ZFNet层的输入输出尺寸-LMLPHP

在给定的图中(来自ZFNet paper),图像的初始大小再次为224x224,因此,如果我们使用带有96个大小为(7x7)且步长为(2,2)的滤镜的2D卷积层,则结果的大小应为是(224-7)/2 + 1 = 109.5,但是如果我们将初始图像大小设为225x225,则我们将准确得到110。而且,在第一层中,我感觉到存在类似的问题。最大池层的输入大小为110x110x96,合并大小为(3x3),步幅为2,因此输出大小应为(110-3)/2 + 1 = 54.5,这又不是整数。我想知道我是在做正确的计算,还是本文给出的值有问题吗?

最佳答案

Pytorch内置实现说您需要使用padding:

self.conv1 = nn.Conv2d(3, 96, 7, stride=2, padding=2)
self.conv2 = nn.Conv2d(96, 256, 5, padding=2)
self.conv3 = nn.Conv2d(256, 384, 3, padding=1)
self.conv4 = nn.Conv2d(384, 384, 3, padding=1)
self.conv5 = nn.Conv2d(384, 256, 3, padding=1)

08-24 13:49