Caffe 初學拾遺(九) Layer Catalogue (Activation/Neuron Layer)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章