0

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

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

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

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

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

你如何从输入到输出?

4

1 回答 1

1

您的卷积过滤器的宽度为 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.
于 2016-03-06T18:30:30.780 回答