caffe添加一个新的层——c++版本

参考链接:https://chrischoy.github.io/research/making-caffe-layer/

这里简单介绍增加Layer的步骤:

1.在caffe.proto增加对应的LayerParameter message。

2.在./include/caffe/layers/路径下增加对应layer的声明。

3.在./src/caffe/layers/路径下增加对应layer的CPU,GPU实现文件。

4.在./src/caffe/test/路径下增加对应layer的test文件。

最后在Caffe文件夹下make整个项目。没有报错就恭喜啦!


一.需要更改或者创建的文件:
base_file:$(CAFFE_HOME)

  • /src/caffe/proto/caffe.proto
  • /include/caffe/common_layers.hpp or vision_layers.hpp
  • /src/caffe/layer_factory.cpp
  • /src/caffe/layers/new_layer.cpp
  • /src/caffe/layers/new_layer.cu
  • /src/caffe/test/test_new_layer.cpp


file1:caffe.proto

在这个文件当中定义新的层的编号(index),不能和之前的序号重复,定义两个部分(1.定义新的id,2.定义新的层)

file2:layer_factory.cpp

在switch case当中,定义刚刚在caffe.proto文件中声明的两个部分(定义新的id,定义新的层),

file3:在层的头文件当中添加声明:

根据我们定义层的类型,在common_layers.hpp or vision_layers.hpp这两个文件当中定义声明


file4&file5:分别在cpp以及cu文件当中定义层

该层需要继承虚类,

virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
vector<Blob<Dtype>*>* top) = 0;
virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
vector<Blob<Dtype>*>* top) = 0;
virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
const vector<bool>& propagate_down,
vector<Blob<Dtype>*>* bottom) = 0;

file6:Test file

Make a file /src/caffe/test/test_new_layer.cpp and use provided caffe unit test macros.

EXPECT_NEAR
EXPECT_GE
EXPECT_LE
EXPECT_EQ


二.编译与测试:

到$CAFFE_HOME路径下

make
make test#make test之后,生成了XXX.testbin文件
./build/test/test_new_layer.testbin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值