如何在Caffe中沿着通道拆分Blob

时间:2016-12-19 17:52:22

标签: deep-learning caffe

我想在Caffe中拆分Blob通道,这样我就可以将一个(N, c, w, h)的Blob拆分为两个大小为(N, c/2, w, h)的输出Blob。

我上面所描述的是非常通用的,我想要做的实际上是将双声道输入图像分成两个不同的图像。一个进入卷积层,另一个进入汇集层。最后,我连接了输出。

所以我想知道是否存在允许用户做这种事情的Caffe层,以及如何在prototxt文件中定义它。

1 个答案:

答案 0 :(得分:3)

是的,Slice图层用于此目的。来自Layer Catalogue

  

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
  }
}