我在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个通道。 谁能解释我发生了什么事?
答案 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):
group
(group
)[默认1]:如果为g
,我们将每个过滤器的连接性限制为输入的子集。具体来说,输入和输出通道分为g > 1
个组,第g
个输出组通道将仅连接到第k
个输入组通道。
在您的情况下,您将所有64个通道分为64个组-这是第k
个输入通道被2x2内核映射(隔离)到第k
个输出通道。总的来说,您有64个这样的2x2映射,这就是为什么您的权重块为64x1x2x2而不是64x64x2x2。
如果删除k
,您将拥有所需的全部重量矩阵。