{承接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)。