反卷积层的意外形状

Unexpected shape for deconv layer

我在一个 deconv 层上工作,它升级了 64 个通道:64x48x48 => 64x96x96。

layer {
    bottom: "layer41_conv"
    top: "layertest_upsample"
    name: "layertest_upsample"
    type: "Deconvolution"
    convolution_param {
        num_output: 64
        group: 64
        kernel_size: 2
        pad: 0
        stride: 2
    }
}

当我打印参数的形状时: (64,1,2,2)。 我被期望是这样的: (64,64,2,2) 因为输入有 64 个通道,输出有 64 个通道。 谁能给我解释一下这是怎么回事?

您定义了group: 64

group 所做的是(根据 manual):

group (g) [default 1]: If g > 1, we restrict the connectivity of each filter to a subset of the input. Specifically, the input and output channels are separated into g groups, and the k-th output group channels will be only connected to the k-th input group channels.

在您的情况下,您将所有 64 个通道分组为 64 个组 - 这就是第 k 个输入通道被 2x2 内核映射(隔离)到第 k 个输出通道.总而言之,您有 64 个这样的 2x2 映射,这就是为什么您的权重 blob 是 64x1x2x2 而不是 64x64x2x2 的原因。
如果您删除 group: 64,您将拥有您期望的完整权重矩阵。