{承接CNN学习入门,笔者在这里对Caffe官方网站上的相关介绍进行了翻译总结,欢迎大家交流指正}
本文基于此刻最新的release,Caffe-rc3:
3. Activation/Neuron Layer:
一般而言,activation/neuron Layers执行的是逐元素操作,取出bottom blob中的数据,生成同样大小的top blob的数据。
在接下来要介绍的layers中,由于input与output的size的一致性,我们将其忽略。
Input: n * c * h * w
Output: n *c * h * w
ReLU/Rectified-Linear and Leaky-ReLU:
1.网络类型:ReLU
2.CPU版本实现:./src/caffe/layers/relu_layer.cpp
3.GPU版本实现:./src/caffe/layers/relu_layer.cu
4.参数(ReLUParameter relu_param):
4.1 Optional
4.1.1 negative_slope [default 0]: 是否将负值部分通过乘以negative_slope使其得以保留而不是置为0。
E.g.
layer {
name: "relu1"
type: "ReLU"
bottom: "conv1"
top: "conv1"
}
对于给出的input value x,ReLU Layer计算:
if x > 0: return x
if x < 0: return x * negative_slope
如果negative_slope参数未设定,则为标准ReLU函数,max(x,0)。
同时也支持恒等函数,top与bottom完全一致,以保留内存空间。
Sigmoid/TanH/Hyperbolic Tangent/Absolute Value/BNLL:
1.网络类型:
Sigmoid/TanH/AbsVal/BNLL(binomial normal log likelihood)
2.CPU版本实现:
./src/caffe/layers/sigmoid_layer.cpp tanh_layer.cpp absval_layer.cpp bnll_layer.cpp
3.GPU版本实现:
./src/caffe/layers/sigmoid_layer.cu
tanh_layer.cu absval_layer.cu bnll_layer.cu
E.g.
layer {
name: "encode1neuron"
bottom: "encode1"
top: "encode1neuron"
type: "Sigmoid"
}
layer {
name: "layer"
bottom: "in"
top: "out"
type: "TanH"
}
layer {
name: "layer"
bottom: "in"
top: "out"
type: "AbsVal"
}
layer {
name: "layer"
bottom: "in"
top: "out"
type: BNLL
}
各Layer逐元素的计算output(Sigmoid(x)/tanh(x)/abs(x)/log(1+exp(x)))。
Power:
1.网络类型:Power
2.CPU版本实现:./src/caffe/layers/power_layer.cpp
3.GPU版本实现:./src/caffe/layers/power_layer.cu
4.参数(PowerParameter power_param):
4.1 Optional
4.1.1 power [default 1]
4.1.2 scale [default 1]
4.1.3 shift [default 0]
E.g.
layer {
name: "layer"
bottom: "in"
top: "out"
type: "Power"
power_param {
power: 1
scale: 1
shift: 0
}
}
Power Layer逐元素的计算output((shift + scale * x)^power)。