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