自定义Caffe层遇到的问题

自定义Caffe层遇到的问题

博主在自定义Caffe层的时候遇到了一些问题,在此记录下来并附上解决方案。更新于2018.10.22。

1

在编译时报如下错误:

src/caffe/layers/embed_layer2d.cu(57): error: function "caffe::MyLayer<Dtype>::Backward_gpu [with Dtype=float]" cannot be instantiated -- no template definition was supplied

src/caffe/layers/embed_layer2d.cu(57): error: function "caffe::MyLayer<Dtype>::Backward_gpu [with Dtype=double]" cannot be instantiated -- no template definition was supplied

原因:在hpp文件中没有注释掉或修改关于backward_gpu的定义。修改可以参照:

 virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
                           const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom)  { for(int i=0; i<propagate_down.size(); i++) if(propagate_down[i]) LOG(FATAL) << "Embed2DLayer cannot do backward."; return; }

2

报错地址必须是整型:

error: expression must have integral or unscoped enum type

在cu文件编写的时候要注意,bottom_data[index]和top_data[index]后面定义地址的参数index的类型。

3

error: expression must be a modifiable lvalue

这是由于等号左边的值无法修改。博主遇到这个报错的原因是,左侧的地址并非当前的index。博主对于这个的理解是:Caffe无法直接跨线程赋值!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值