Eltwise Layer
- Layer type:
Eltwise
- Doxygen Documentation
- Header:
./include/caffe/layers/eltwise_layer.hpp
- CPU implementation:
./src/caffe/layers/eltwise_layer.cpp
- CUDA GPU implementation:
./src/caffe/layers/eltwise_layer.cu
Parameters
- Parameters (
EltwiseParameter eltwise_param
) - From
./src/caffe/proto/caffe.proto
)
Eltwise层介绍
Eltwise 层的主要作用是对两个 blob 按位置做数据融合,其融合操作有三个:product(点乘), sum(相加减) 和 max(取最大值),其中 sum 是默认操作。
(1)element_wise A+B: A 和 B 的对应元素相加
layer
{
name: "eltwise_layer"
type: "Eltwise"
bottom: "A"
bottom: "B"
top: "diff"
eltwise_param {
operation: SUM
}
}
(2)element_wise A-B: A 和 B 的对应元素相减
layer
{
name: "eltwise_layer"
type: "Eltwise"
bottom: "A"
bottom: "B"
top: "diff"
eltwise_param {
operation: SUM
coeff: 1
coeff: -1
}
}
- coeff 参数只对 SUM 操作起作用。有多少个 bottom 就有多少个 coeff,coeff 默认为 1
- Eltwise 层要求 bottom 层的 blob 大小一致
与Concat层比较
效果上,Eltwise 因为更直接的利用了上下文信息,所以精度提高,但是 Eltwise 的操作却增加了算法耗时,而 Concat 层虽然提高的精度没有 Eltwise 那么明显,但是训练和测试速度相对快了一点,所以应用时更看如何权衡两者能不能满足自己项目的需求。