我想在Caffe中拆分Blob通道,这样我就可以将一个(N, c, w, h)
的Blob拆分为两个大小为(N, c/2, w, h)
的输出Blob。
我上面所描述的是非常通用的,我想要做的实际上是将双声道输入图像分成两个不同的图像。一个进入卷积层,另一个进入汇集层。最后,我连接了输出。
所以我想知道是否存在允许用户做这种事情的Caffe层,以及如何在prototxt文件中定义它。
答案 0 :(得分:3)
是的,Slice
图层用于此目的。来自Layer Catalogue:
Slice
图层是一个实用程序图层,它使用给定的切片索引将输入图层沿给定维度(目前仅num
或channel
)切割为多个输出图层。
要将大小为N x 2 x H x W
的Blob切成两个大小为N x 1 x H x W
的Blob,您必须在axis: 1
(在第一个频道之后)切片slice_point: 1
(沿着频道) :
layer {
name: "slice-conv-pool"
type: "Slice"
bottom: "data"
top: "conv1"
top: "pool1"
slice_param {
axis: 1
slice_point: 1
}
}