为什么这个卷积的输出有这些维度?

Why does the output of this convolution have these dimensions?

我正在尝试在 Caffe 中复制卷积的输出。

据我了解,Caffe使用im2col算法将nD数组转换为矩阵并将它们相乘。然而,Caffe 中输出的维度让我感到困惑。

使用 ImageData 层,我输入了 4 张尺寸为 150x149 的图像,批量大小为 4。Caffe 创建了一个尺寸为 4x3x149x150 的 4D 数组。

我将它们与一个卷积层进行卷积,该卷积层具有大小为 7 且步幅为 1 的过滤器(num_output = 1 & bias = 零向量)。这意味着权重的尺寸为 1x3x7x7。据我了解,如果步幅为 1,则应将过滤器应用于每个元素,并且输出应具有与输入相同的维度。然而,我得到的是以下维度的输出:4x1x143x144。

我不明白这怎么可能。如何在 Matlab(或其他)中执行相同的操作?

如何从输入到输出?

你的卷积滤波器的宽度为 7。在 1D 中观察它,它的第一个应用将是像素

1, 2, 3, 4, 5, 6, 7,

第二个到像素

2, 3, 4, 5, 6, 7, 8,

依此类推,直到最后一个,它对像素进行操作

143, 144, 145, 146, 147, 148, 149.

因此,如您所见,滤镜有 143 种不同的应用,每一种都会产生一个输出像素。因此,输出维度为143。其他坐标方向类似。

简而言之,步幅为 1 的过滤器的输出宽度将始终为

output width = image width - filter width + 1.