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

时间:2016-03-06 17:00:43

标签: machine-learning computer-vision convolution caffe pycaffe

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

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

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

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

我看不出这是怎么回事。如何在Matlab(或其他)中执行相同的操作?

如何从输入到输出?

1 个答案:

答案 0 :(得分: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.