【caffe】Layer解读之:Eltwise

  • Layer type: Eltwise
  • 头文件位置:./include/caffe/layers/eltwise_layer.hpp
  • CPU 执行源文件位置: ./src/caffe/layers/eltwise_layer.cpp
  • CUDA GPU 执行源文件位置: ./src/caffe/layers/eltwise_layer.cu
  • Eltwise层的功能:按元素操作层(Resnet 中的shortcut)。
参数解释
  layer {
        name: "eltwise"
        type: "Eltwise"
        bottom: "conv1"
        bottom: "conv2"
        bottom: "conv3"
        top: "eltwise"
        eltwise_param {
             operation: SUM  
        }
}

对输入的三个卷积层的特征图做求和,最终合并成一层。
那么问题来了,如果我想要做差呢,那么coeff参数就起到作用了,具体如下:

layer {
        name: "eltwise"
        type: "Eltwise"
        bottom: "data"
        bottom: "conv3"
        top: "eltwise"
        eltwise_param {
        operation: SUM
                coeff: 1
                coeff: -1
                }
}

这个操作就相当于data层减去conv3层(像素级的)。

参数定义

参数(EltwiseParameter eltwise_param))
定义位置 ./src/caffe/proto/caffe.proto:

message EltwiseParameter {
  enum EltwiseOp {
    PROD = 0;//按照元素乘积
    SUM = 1;//按照元素求和
    MAX = 2;//求元素最大值
  }
  optional EltwiseOp operation = 1 [default = SUM]; // element-wise operation
  //coeff参数支队SUM操作有效
  repeated float coeff = 2; // blob-wise coefficient for SUM operation

   //stable_prod_grad 参数只对PROD操作有效
  // Whether to use an asymptotically slower (for >2 inputs) but stabler method
  // of computing the gradient for the PROD operation. (No effect for SUM op.)
  optional bool stable_prod_grad = 3 [default = true];
}

猜你喜欢

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