移动网络架构

时间:2021-06-29 10:04:21

标签: tensorflow deep-learning computer-vision conv-neural-network mobilenet

enter image description here

上图包含 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。我是这些概念的新手,谁能解释一下我哪里出错了?

1 个答案:

答案 0 :(得分:1)

你没有看错,如果不填充第一个 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)

它会理解不可能在每个维度的两侧进行填充,并返回形状为 (112, 112, 32) 的输出。