每次寫博客都帶有必定的目的,在我看來這是一個記錄的過程,因此儘可能按照按部就班的順序逐步寫,前面介紹的CNN層應該是很是經常使用的,這篇博客介紹一下某些特殊的layer,可是因爲特殊的layer都帶有必定的目的因此根據項目是能夠修改和添加的,後續保持更新。數組
- permute layer:改變blob數組的order,例如N×C×H×W變換爲N×H×W×C,permute_param爲order:0,order:2,order:3,order:1;這樣作的目的多是方便後面操做。
- flatten layer:將N×C×H×W改變成N×(C*H*W)×1×1。
- reshape layer:能夠將任意的輸入維度變成你想要的輸出維數,其中dim:0表示這一維度保持不變,dim:-1表示這一維度根據其它維度自動計算獲得。
- tile layer:將blob的某個維度,擴大n倍。好比原來是1234,擴大兩倍變成11223344,沒用過。
- reduction layer:將某個維度縮減至1維,方法能夠是sum、mean、asum、sumsq,沒用過。
以下面的例子:spa
layer { name: "conv9_2_mbox_conf_perm" type: "Permute" bottom: "conv9_2_mbox_conf" top: "conv9_2_mbox_conf_perm" permute_param { order: 0 order: 2 order: 3 order: 1 } }
layer { name: "conv9_2_mbox_conf_flat" type: "Flatten" bottom: "conv9_2_mbox_conf_perm" top: "conv9_2_mbox_conf_flat" flatten_param { axis: 1 } }
layer { name: "mbox_conf_reshape" type: "Reshape" bottom: "mbox_conf" top: "mbox_conf_reshape" reshape_param { shape { dim: 0 dim: -1 dim: 21 } } }