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

use*_*987 6 deep-learning caffe

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

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

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

hba*_*rts 3

是的,该Slice层就是用于此目的的。从图层目录

Slice层是一个实用层,它使用给定的切片索引沿着给定维度(当前numchannel仅)将输入层切片为多个输出层。

要将大小为 的 Blob 切片N x 2 x H x W为两个大小为 的 Blob N x 1 x H x W,您必须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
  }
}
Run Code Online (Sandbox Code Playgroud)