
上图包含移动网络架构,在第一行中,输入大小为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。我是第一次接触这些想法,有人能解释一下我哪里出错了吗?
发布于 2021-07-02 17:53:35
你说得没错,没有填充的第一个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)的输出。
https://stackoverflow.com/questions/68176579
复制相似问题