- Layer type: Slice
- 头文件位置:/include/caffe/layers/slice_layer.hpp
- CPU 执行源文件位置: ./src/caffe/layers/slice_layer.cpp
- CUDA GPU 执行源文件位置: ./src/caffe/layers/slice_layer.cu
- Slice层的功能:根据给定的参数对输入层进行划分(以通道为单位)。
参数解读
layer {
name: "slicer_label"
type: "Slice"
bottom: "label"
## Example of label with a shape N x 3 x 1 x 1
## Example of label with a shape N x 5 x 1 x 1
top: "label1"
top: "label2"
top: "label3"
slice_param {
axis: 1
slice_point: 1
slice_point: 2
}
}
参数axis:表示对输入的layer中的哪个维度的数据进行划分(在例子中就是对label的3那个维度进行划分)
参数slice_point:slice_point个数 = top个数 - 1。如上图就是把label划分为三个维度,每个维度分别1。(shape N x 3 x 1 x 1)
参数slice_point:slice_point个数 = top个数 - 1。如上图就是把label划分为三个维度,每个维度分别1,1,3。(shape N x 5 x 1 x 1)
参数定义
- 参数(SliceParameter slice_param)
- 定义位置 ./src/caffe/proto/caffe.proto:
message SliceParameter {
// The axis along which to slice -- may be negative to index from the end
// (e.g., -1 for the last axis).
// By default, SliceLayer concatenates blobs along the "channels" axis (1).
optional int32 axis = 3 [default = 1];
repeated uint32 slice_point = 2;
// DEPRECATED: alias for "axis" -- does not support negative indexing.
optional uint32 slice_dim = 1 [default = 1];
}