caffe 中添加新的layer

假设新的layer的名字为new_layer;
1、创建layer头文件new_layer.hpp(一般继承自基础类,如Layer、BasePrefetchingDataLayer等);
2、实现new_layer.cpp文件;
3、实现new_layer.cu文件(根据需要,可不写该文件,即该layer不适用GPU);
4、遇到问题1:实现new_layer.cpp文件时,出现错误
In instantiation of ‘boost::shared_ptr《caffe::Layer《Dtype》》 caffe::Creator_CrowdEvaluateLayer(const caffe::LayerParameter&) [with Dtype = float]’:
../src/caffe/layers/NewLayer.cpp:64:1: required from here
../include/caffe/layer_factory.hpp:135:67: error: invalid new-expression of abstract class type caffe::NewLayer《float》’
return shared_ptr《Layer《Dtype》》(new type##Layer《Dtype》(param));
新添加的layer继承自其它layer(如Layer等)时,必须实现其所有纯虚函数(如Forward_cpu()、Backward_cpu()等函数),出现该错误,可能是在添加新的layer时,没有实现其基类中有关CPU操作纯虚函数;
解决方法:定义基类中的有关CPU操作的所有纯虚函数(Forward_cpu()、Backward_cpu()等),若没有实际应用的函数,可以没有具体实现,此时在函数内部只需写NOT_IMPLEMENTED;

5、遇到问题2: 实现new_layer.cu文件时,出现错误 inherited member is not allowed
原因:同上,必须实现其所有纯虚函数(如Forward_gpu()、Backward_gpu()等函数),添加新的layer时,在使用GPU时,没有实现其基类中有关GPU操作纯虚函数;
解决方法:定义基类中的有关GPU操作的所有纯虚函数(Forward_gpu()、Backward_gpu()等),若没有实际应用的函数,可以没有具体实现,此时在函数内部只需写NOT_IMPLEMENTED;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值