Caffe之Scale層原始碼

2021-08-15 02:26:13 字數 1251 閱讀 5148

最近要對模型進行壓縮使用slimming,因此需要scale層對scale_diff進行l1正則。所以對原始碼進行了閱讀。

公式: y = ax + b。

公式比較簡單。上述公式的意思是,對feature map乘以a,並加b。乙個feature map共用乙個a,因此 a的維度是 c ,這是理解原始碼的前提。

反向傳播:

> bias_layer_; //對於偏置項的學習直接呼叫bias 層

vector

*> bias_bottom_vec_;

vector

bias_propagate_down_;

int bias_param_id_;

blobsum_multiplier_; //儲存

blobsum_result_;

blobtemp_;

int axis_;

int outer_dim_, scale_dim_, inner_dim_;

template

void scalelayer::backward_cpu(const

vector

*>& top,

const

vector

& propagate_down, const

vector

*>& bottom)

const

bool scale_param = (bottom.size() == 1);

blob* scale = scale_param ? this->blobs_[0].get() : bottom[1];

if ((!scale_param && propagate_down[1]) ||

(scale_param && this->param_propagate_down_[0])) else

if (sum_result_.count() == 1) else

} else

if (outer_dim_ != 1) else

} else }}

} if (propagate_down[0]) }}}

caffe原始碼 之 Relu層

本文主要實現caffe框架中 src caffe layers relu layer.cpp檔案,該檔案實現的是啟用函式relu。relu是近些年非常流行的啟用函式。相比於sigmoid與tanh,它具有一定的優越性,這三者對比可見它的函式公式是f x max 0,x 換句話說,這個啟用函式就是乙個...

caffe原始碼 卷積層

input 3 5 5 c h w pading 1 步長 2 卷積核 2 3 3 3 n c k k output 2 3 3 c h w 如下圖所示 首先需要理解caffe裡面的im2col和col2im 然後 卷積層 其實和 全連線層 差不多了 input 3 4 4 c h w 卷積核 1 ...

Roi Pooling層caffe原始碼解讀

在看fasterrcnn以及和maskrcnn的時候,發現自己對fasterrcnn的roi pooling層的原理還是不是很明白,之前只是知道roi pooling是將rpn輸出的乙個roi的區域對映成乙個固定大小的map,再送入後面的分類層進行分類。最近看了下roi pooling層的原始碼,頓...