去凸层的形状异常

时间:2019-07-01 14:09:55

标签: caffe deconvolution

我在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个通道。 谁能解释我发生了什么事?

1 个答案:

答案 0 :(得分:1)

您定义了class VCB: UIViewController { @IBAction func onTapNextButton(_ sender: UIButton) { if let controller = self.storyboard?.instantiateViewController(withIdentifier: "NavVC") { self.dismiss(animated: false, completion: nil) self.presentingViewController?.present(controller, animated: true, completion: nil) } } } class NavVC: UINavigationController {} class VCC: UIViewController { @IBAction func onTapCloseButton(_ sender: UIButton) { self.navigationController?.dismiss(animated: true, completion: nil) } }

group: 64的作用是(根据manual):

  

groupgroup)[默认1]:如果为g,我们将每个过滤器的连接性限制为输入的子集。具体来说,输入和输出通道分为g > 1个组,第g个输出组通道将仅连接到第k个输入组通道。

在您的情况下,您将所有64个通道分为64个组-这是第k个输入通道被2x2内核映射(隔离)到第k个输出通道。总的来说,您有64个这样的2x2映射,这就是为什么您的权重块为64x1x2x2而不是64x64x2x2。
如果删除k,您将拥有所需的全部重量矩阵。