pytorch张量与卷积计算
pytorch中张量的形状
在 PyTorch 中,张量的形状通常遵循 N x C x H x W
的顺序,其中:
N
表示批量大小(batch size),C
表示通道数(number of channels),H
表示高度(height),W
表示宽度(width)。
因此,对于 PyTorch 中的图像数据,高度 H
通常在宽度 W
之前。这种顺序有时被称为“通道优先”(channel-first)格式,与某些其他深度学习框架(如 TensorFlow,它使用“通道最后”(channel-last)格式,即 N x H x W x C
)不同。
卷积的计算公式
如果我们按照 PyTorch 的 $$N \times C \times H \times W$$ 格式来调整卷积层输出尺寸的计算公式,那么公式如下:
对于卷积层,给定输入特征图的尺寸为 $$N \times C_{in} \times H_{in} \times W_{in}$$,卷积核尺寸为 $$K_{h} \times K_{w}$$,填充为 $$P_{h} \times P_{w}$$,步长为 $$S_{h} \times S_{w}$$,输出特征图的尺寸 $$N \times C_{out} \times H_{out} \times W_{out}$$ 可以通过以下公式计算得出:
\[H_{out} = \left\lfloor \frac{H_{in} + 2 \times P_{h} - K_{h}}{S_{h}} + 1 \right\rfloor
\]
\[W_{out} = \left\lfloor \frac{W_{in} + 2 \times P_{w} - K_{w}}{S_{w}} + 1 \right\rfloor
\]
其中,$$\lfloor \cdot \rfloor$$ 表示向下取整。
对于池化层,如果池化核尺寸为 $$F_{h} \times F_{w}$$,步长为 $$S_{h} \times S_{w}$$,输出特征图的尺寸同样可以用类似的公式计算:
\[H_{pool} = \left\lfloor \frac{H_{in} - F_{h}}{S_{h}} + 1 \right\rfloor
\]
\[W_{pool} = \left\lfloor \frac{W_{in} - F_{w}}{S_{w}} + 1 \right\rfloor
\]
这些公式可以帮助我们预测卷积层或池化层之后的输出特征图尺寸,其中 $$H$$ 总是先于 $$W$$ 来表示高度和宽度。
本文来自博客园,作者:JaxonYe,转载请注明原文链接:https://www.cnblogs.com/yechangxin/articles/18390341
侵权必究