我正在尝试在caffe
中训练3D-Unet。不同体积的宽度,高度和深度是不同的。 HDF5数据集中第一个体积的输入形状为1 1 104 281 389
(NxCxDxHxW),当其达到Concat layer
(concat_d2c_u2a-b)时,将引发错误,它是与以下内容一起输入的两种形状:
如何解决此问题?是因为尺寸顺序?
I0708 22:19:59.811188 30282 layer_factory.cpp:74] Creating layer concat_d2c_u2a-b
I0708 22:19:59.811198 30282 net.cpp:185] Creating Layer concat_d2c_u2a-b
I0708 22:19:59.811200 30282 net.cpp:549] concat_d2c_u2a-b <- scaleu2a
I0708 22:19:59.811203 30282 net.cpp:549] concat_d2c_u2a-b <- scaled2c_relu_d2c_0_split_1
I0708 22:19:59.811208 30282 net.cpp:515] concat_d2c_u2a-b -> u2b
F0708 22:19:59.811223 30282 concat_layer.cpp:45] Check failed: top_shape[j] == bottom[i]->shape(j) (12 vs. 19) All inputs must have the same shape, except at concat_axis.
*** Check failure stack trace: ***
答案 0 :(得分:0)
"Concat"
操作将两个(或多个)Blob放在一起。例如,如果您有两个尺寸为10的一维Blob x1
和尺寸为15的x2
,则将它们连接起来将得到尺寸为25的一维矢量y
。
为了合并更高维的Blob,除了concat尺寸外,您必须使Blob的所有尺寸都相同。例如,如果要用n1
x c1
x h1
来连接w1
x n1
x c2
x h2
Blob沿通道维度x w2
,那么您必须具有n1==n2
,h1==h2
和w1==w2
,而您的输出Blob将为n
x (c1+c2)
x h
x w
。
请注意,如果任何非渠道尺寸都不匹配,则无法沿渠道尺寸合并。
在您的情况下,所有尺寸都不匹配,因此无法合并。您需要检查您的体系结构,并确保正确地填充/合并/跨步,以确保尺寸适合串联。