【caffe】Layer解读之:Slice

  • 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];
}

猜你喜欢

转载自blog.csdn.net/qiu931110/article/details/81565058