深度學習框架之caffe(七)-layer層

Vision Layers

1. 卷積層(ConvolutionLayer)
2. 池化層(PoolingLayer)

Activation / Neuron Layers

1. ReLU(Rectified-Linear and Leaky)

Loss Layers

Utility Layers

1. Slice
將bottom按照需要分解成多個tops。即在某一個維度,按照給定的下標倾芝,blob拆分成幾塊拌喉。比如要拆分channel肘迎,總數(shù)50灸姊,下標為10,30,40父叙,那就是分成4份徙垫,輸出4個layer饺汹。假設input的維度是N*50*H*W,tops輸出的維度分別為N*10*H*W, N*20*H*W, N*10*H*W, N*10*H*W 蛔添,使用示例:

layer {
  name: "slice"
  type: "Slice"
  bottom: "input"
  top: "output1"
  top: "output2"
  top: "output3"
  top: "output4"
  slice_param {
    axis: 1 #要進行分解的維度
    slice_point: 10
    slice_point: 20
    slice_point: 30
    slice_point: 40
  }
}

這里需要注意的是,如果有slice_point兜辞,slice_point的個數(shù)一定要等于top個數(shù)減1迎瞧。 slice_point的作用是將axis按照slic_point 進行分解,沒有設置時則對axis進行均勻分解逸吵⌒坠瑁可設參數(shù)如下:

message SliceParameter {
  // The axis along which to slice -- may be negative to index from the end
  // (e.g., -1 for the last axis).
  // By default, SliceLayer concatenates blobs along the "channels" axis (1).
  optional int32 axis = 3 [default = 1];
  repeated uint32 slice_point = 2;

  // DEPRECATED: alias for "axis" -- does not support negative indexing.
  optional uint32 slice_dim = 1 [default = 1];
}

2. Concat
在某個維度,將輸入的layer拼接起來扫皱,是slice的逆過程足绅。使用示例:

layer {
  name: "data_all"
  type: "Concat"
  bottom: "data_classfier"
  bottom: "data_boundingbox"
  bottom: "data_facialpoints"
  top: "data_all"
  concat_param {
    axis: 1 # 拼接的維度,默認1韩脑,0表示沿batch(即num)拼接
  }
}

參數(shù)定義:

message ConcatParameter {
  // The axis along which to concatenate -- may be negative to index from the
  // end (e.g., -1 for the last axis).  Other axes must have the
  // same dimension for all the bottom blobs.
  // By default, ConcatLayer concatenates blobs along the "channels" axis (1).
  optional int32 axis = 2 [default = 1];

  // DEPRECATED: alias for "axis" -- does not support negative indexing.
  optional uint32 concat_dim = 1 [default = 1];
}

3. Split
將blob復制幾份编检,分別給不同的layer,這些上層layer共享這個blob扰才。無需參數(shù)允懂。

4. Tile
將blob的某個維度,擴大n倍衩匣。比如原來是1234蕾总,擴大兩倍變成11223344。

5. Reduction
使用sum或mean等操作作用于輸入blob按照給定參數(shù)規(guī)定的維度琅捏。(通俗的講就是將輸入的特征圖按照給定的維度進行求和或求平均)生百。用法示例:

layer {
  name: "o_pseudoloss"
  type: "Reduction"
  bottom: "o"
  top: "o_pseudoloss"
  loss_weight: 1
  reduction_param{
       axis: 0//default = 0
       optional ReductionOp operation = SUM //default = SUM
    }
}

參數(shù)

// Message that stores parameters used by ReductionLayer
message ReductionParameter {
  enum ReductionOp {
    SUM = 1;
    ASUM = 2;
    SUMSQ = 3;
    MEAN = 4;
  }

  optional ReductionOp operation = 1 [default = SUM]; // reduction operation

  // The first axis to reduce to a scalar -- may be negative to index from the
  // end (e.g., -1 for the last axis).
  // (Currently, only reduction along ALL "tail" axes is supported; reduction
  // of axis M through N, where N < num_axes - 1, is unsupported.)
  // Suppose we have an n-axis bottom Blob with shape:
  //     (d0, d1, d2, ..., d(m-1), dm, d(m+1), ..., d(n-1)).
  // If axis == m, the output Blob will have shape
  //     (d0, d1, d2, ..., d(m-1)),
  // and the ReductionOp operation is performed (d0 * d1 * d2 * ... * d(m-1))
  // times, each including (dm * d(m+1) * ... * d(n-1)) individual data.
  // If axis == 0 (the default), the output Blob always has the empty shape
  // (count 1), performing reduction across the entire input --
  // often useful for creating new loss functions.
  optional int32 axis = 2 [default = 0];

  optional float coeff = 3 [default = 1.0]; // coefficient for output
}

6. Reshape
這個很簡單,就是matlab里的reshape柄延。

7. Eltwise
按元素對輸入執(zhí)行相應的操作運算:如相加蚀浆,相乘,取最大等搜吧。因此輸入必須具有相同的尺寸和維度市俊。

layer 
{
  name: "eltwise_layer"
  type: "Eltwise"
  bottom: "A"
  bottom: "B"
  top: "diff"
  eltwise_param {
    operation: SUM
    coeff: 1 # 執(zhí)行A+(-B)=A-B的操作,默認不寫時執(zhí)行A+B
    coeff: -1
  }
}?

注意:參數(shù)coeff只對SUM操作有效滤奈,用于控制相加時的權(quán)值
參數(shù):

message EltwiseParameter {
  enum EltwiseOp {
    PROD = 0;
    SUM = 1;
    MAX = 2;
  }
  optional EltwiseOp operation = 1 [default = SUM]; // element-wise operation
  repeated float coeff = 2; // blob-wise coefficient for SUM operation

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

8. Flatten
把一個輸入的大小為n * c * h * w變成一個簡單的向量摆昧,其大小為 n * (chw)⊙殉蹋可以用reshape代替~绅你,相當于第一維不變伺帘,后面的自動計算。
參數(shù)定義:

/// Message that stores parameters used by FlattenLayer
message FlattenParameter {
  // The first axis to flatten: all preceding axes are retained in the output.
  // May be negative to index from the end (e.g., -1 for the last axis).
  optional int32 axis = 1 [default = 1];

  // The last axis to flatten: all following axes are retained in the output.
  // May be negative to index from the end (e.g., the default -1 for the last
  // axis).
  optional int32 end_axis = 2 [default = -1];
}

參考

http://caffe.berkeleyvision.org/tutorial/
https://blog.csdn.net/chenzhi1992/article/details/52837462
http://www.reibang.com/p/0ade01e9e48a

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末忌锯,一起剝皮案震驚了整個濱河市伪嫁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌偶垮,老刑警劉巖礼殊,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異针史,居然都是意外死亡,警方通過查閱死者的電腦和手機碟狞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門啄枕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人族沃,你說我怎么就攤上這事频祝。” “怎么了脆淹?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵常空,是天一觀的道長。 經(jīng)常有香客問我盖溺,道長漓糙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任烘嘱,我火速辦了婚禮昆禽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蝇庭。我一直安慰自己醉鳖,他們只是感情好,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布哮内。 她就那樣靜靜地躺著盗棵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪北发。 梳的紋絲不亂的頭發(fā)上纹因,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音琳拨,去河邊找鬼辐怕。 笑死,一個胖子當著我的面吹牛从绘,可吹牛的內(nèi)容都是我干的寄疏。 我是一名探鬼主播是牢,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼陕截!你這毒婦竟也來了驳棱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤农曲,失蹤者是張志新(化名)和其女友劉穎社搅,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乳规,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡形葬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了暮的。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笙以。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖冻辩,靈堂內(nèi)的尸體忽然破棺而出猖腕,到底是詐尸還是另有隱情,我是刑警寧澤恨闪,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布倘感,位于F島的核電站,受9級特大地震影響咙咽,放射性物質(zhì)發(fā)生泄漏老玛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一钧敞、第九天 我趴在偏房一處隱蔽的房頂上張望逻炊。 院中可真熱鬧,春花似錦犁享、人聲如沸余素。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桨吊。三九已至,卻和暖如春凤巨,著一層夾襖步出監(jiān)牢的瞬間视乐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工敢茁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留佑淀,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓彰檬,卻偏偏與公主長得像伸刃,于是被迫代替她去往敵國和親谎砾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容