我试图在Caffe中复制卷积的输出。
据我了解,Caffe使用im2col算法将nD数组转换为矩阵并将它们相乘。但是,Caffe输出的尺寸让我感到困惑。
使用ImageData图层,我输入4个尺寸为150x149的图像,批量大小为4. Caffe创建一个尺寸为4x3x149x150的4D阵列。
我用卷积层对这些卷积进行卷积,滤波器的大小为7,步幅为1(num_output = 1& bias =零向量)。这意味着权重的尺寸为1x3x7x7。据我所知,如果步幅为1,则应将滤波器应用于每个元素,并且输出应具有与输入相同的尺寸。然而,我得到的是以下维度的输出:4x1x143x144。
我看不出这是怎么回事。如何在Matlab(或其他)中执行相同的操作?
如何从输入到输出?
答案 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.