Caffe - 连接层输入和输出

3

我在Caffe官网上读到Concat层的相关内容,但是我不确定自己是否理解正确。

假设我有两个输入层,它们分别可以描述为W1 x H1 x D1W2 x H2 x D2,其中W表示宽度,H表示高度,D表示深度。

因此,我理解当Axis设置为0时,输出将为(W1 + W2) x (H1 + H2) x D,其中D = D1 = D2

当Axis设置为1时,输出将为W x H x (D1 + D2),其中H = H1 = H2W = W1 = W2

我的理解正确吗?如果不是,我将非常感谢您的解释。

1个回答

5

恐怕您的理解有些偏差...
请查看这个caffe.help

通常,在caffe中,数据以4D“blobs”存储: BxCxHxW(即批量大小乘以通道/特征/深度乘以高度乘以宽度)。
如果您有两个blob B1xC1xH1xW1B2xC2xH2xW2,则可以沿着 axis: 1(沿着通道维度)将它们连接起来,形成一个输出blob,其中 C=C1+C2。这仅在 B1==B2H1==H2W1==W2 的情况下才可能发生,结果为 B1x(C1+C2)xH1xW1


感谢您的回答!如果我理解正确,批量大小只是决定一次发送多少图像到GPU(或CPU)的参数。因此,如果我将batch_size设置为1,则可以查看Concat层在处理2个图像时的操作。然后,我关于将轴设置为1的输出所写的内容是正确的。对吗? - Aleksander Monk
1
@AleksanderMonk 即使你的 batch_size: 1,你也有一个 B=1 的 4D blob。请注意,caffe 中的维度顺序与你在问题中写的不同。 - Shai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接