移动网络架构

Mobilenet architecture

上图包含 mobilenet 架构,在第一行中提到的输入大小为 224x224x3,滤波器形状为 3x3x3x32,步幅为 2。如果我们应用公式 out_size = (( input_size - filter_size + 2*padding)/stride)+1,(padding = 0) 我们得到 out_size 作为 (224-3+2(0))/2 + 1 = 111.5 ,但在第二行中提到的输入大小为 112x112x32。我是这些概念的新手,谁能解释我哪里出错了?

你没有看错,没有填充第一个 2D 卷积层的输出形状是不够的。

要实现它,您必须在左右维度的一侧设置一个内边距,在上下维度的一侧设置一个内边距。这样你就会有一个 225x225x3 的输入形状,这将在步长 2 和内核 3x3 的 2D 卷积之后产生正确的输出形状。

使用 PyTorch,您可以简单地在

中设置 padding=1
torch.nn.Conv2d(in_channels=3, out_channels=32, kernel_size=(3,3), stride=2, padding=1)

可以理解,在每个维度的两边填充是不可能的,并且return输出形状为(112, 112, 32)。