如何在Caffe中按通道拆分Blob

6
我想在Caffe中拆分Blob通道,这样我就可以将一个(N, c, w, h)的Blob拆分成两个输出Blob,大小为(N, c/2, w, h)
上面描述的是非常普遍的情况,实际上我想做的是将一个双通道输入图像分成两个不同的图像。其中一个进入卷积层,另一个进入池化层。最后,我将它们的输出连接起来。
所以我想知道是否存在一种Caffe层可以允许用户执行此操作,并且如何在prototxt文件中定义它。
1个回答

3
是的,Slice层就是为此目的而设计的。从层目录中可以获取以下信息:

Slice层是一个实用工具层,它可以沿着给定的维度(目前仅支持numchannel)和给定的切片索引将输入层切成多个输出层。

要将大小为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
  }
}

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