caffe 中有眾多的網路層,最新版本的**已經涵蓋了很多種型別的網路層,然而,有時候由於各種原因,其給定的網路層不能滿足我們的要求,這時候就要對其更改,以使其滿足自己的需求,感謝作者開源**以及眾多的**維護者。
由於caffe 中的網路層都是直接或者間接地給予layer 基類,所以,在我們需要新增新的型別時,就需要選擇好自己的基類,以使我們能夠更好的利用基類已有的一些方法。我們新建的類可以基於
1. 直接繼承於layer
2. 繼承於datalayer
3. 繼承於neuronlayer
4. 繼承於losslayer
5. 或者如果是直接想改進某個層的**,可以直接繼承該類,並做相對應的修改即可。
第一步, 新增標頭檔案.h ,可以自己新建乙個標頭檔案,或者追加到乙個已有的標頭檔案後面,比如include/datalayer.hpp 等, 在裡面定義一些類變數等。
第二步,新增實現檔案,建立類的實現函式,放在src/***.cpp 中,如果有cuda實現,則需要新增相對應的.cu檔案實現,主要需要寫layersetup ,reshape ,forward ,backup 函式。
第三步, 註冊類,到src/caffe/layer_factory.cpp 中新增對應的類,在其中加入
register_layer_class(mylayer, mylayer);第四步,在src/caffe/proto/caffe.proto 檔案中,新增對應的類以及類引數。
在enum layertype {}中新增一行
enum
layertype
//其中mylayer 是新新增的類名,id是類編號,注意不能更之前的重複。
再新增類引數
optional mylayerparameter mylayer_param =id2; //其中mylayerparameter 是網路層引數,id2 是id
最後定義類引數
message mylayerparameter第五步,寫測試檔案,這個是可選的,不過為了合併到github中,需要測試通過。
參考:1.在 include/caffe/vision_layers.hpp 中新增 wtflayer的定義,由於此處不實現gpu函式,因此注釋掉了gpu函式
[cpp]view plain
copy
template
<
typename
dtype>
class
wtflayer :
public
baseconvolutionlayer
virtual
inline
const
char
* type()
const
protected
: virtual
void
forward_cpu(
const
vector*>& bottom,
const
vector*>& top);
//virtual void forward_gpu(const vector*>& bottom,
// const vector*>& top);
virtual
void
backward_cpu(
const
vector*>& top,
const
vector<
bool
>& propagate_down,
const
vector*>& bottom);
//virtual void backward_gpu(const vector*>& top,
// const vector& propagate_down, const vector*>& bottom);
virtual
inline
bool
reverse_dimensions()
virtual
void
compute_output_shape();
};
caffe新增自己編寫的Python層
由於python的靈活性,我們在caffe中新增自己定義的層時使用python層會更加方便,開發速速也會比c 更快,現在我就在這兒簡單說一下如何在caffe中新增自定義的python層 使用的原網路結構時lenet結構 然後在 home zf caffe examples mnist lenet t...
caffe中新增local層
修改makefile.config 我是將cuudn注釋掉,去掉cpu only的注釋 make all make test 其中local test出錯,將檔案中gpu部分注釋掉即可 make runtest 將python路徑在.bashrc中更改 export pythonpath home ...
如何向caffe中新增層
修改caffe src caffe proto caffe.proto 在最後新增centerloss層的引數資訊 message centerlossparameter 新增層型別資訊,注意不能與其他層的數字相同。optional centerlossparameter center loss p...