[ 1%] Building CXX object src/caffe/CMakeFiles/caffe.dir/layers/sigmoid_cross_entropy_loss_layer.cpp.o
In file included from /home/lzh/Caffe/hed-master/include/caffe/common.hpp:19:0,
from /home/lzh/Caffe/hed-master/include/caffe/blob.hpp:8,
from /home/lzh/Caffe/hed-master/include/caffe/layer.hpp:9,
from /home/lzh/Caffe/hed-master/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp:5:
/home/lzh/Caffe/hed-master/include/caffe/util/device_alternate.hpp:30:39: error: no ‘void caffe::SigmoidCrossEntropyLossLayer<Dtype>::Backward_gpu(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<bool>&, const std::vector<caffe::Blob<Dtype>*>&)’ member function declared in class ‘caffe::SigmoidCrossEntropyLossLayer<Dtype>’
const vector<Blob<Dtype>*>& bottom) { NO_GPU; } \
^
/home/lzh/Caffe/hed-master/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp:121:1: note: in expansion of macro ‘STUB_GPU_BACKWARD’
STUB_GPU_BACKWARD(SigmoidCrossEntropyLossLayer, Backward);
^
src/caffe/CMakeFiles/caffe.dir/build.make:566: recipe for target 'src/caffe/CMakeFiles/caffe.dir/layers/sigmoid_cross_entropy_loss_layer.cpp.o' failed
make[2]: *** [src/caffe/CMakeFiles/caffe.dir/layers/sigmoid_cross_entropy_loss_layer.cpp.o] Error 1
CMakeFiles/Makefile2:272: recipe for target 'src/caffe/CMakeFiles/caffe.dir/all' failed
make[1]: *** [src/caffe/CMakeFiles/caffe.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
1.解决方案
这里以上面的错误为例,其他类似的错误解决方法大同小异!
首先打开include/caffe/loss_layers.hpp,然后找到SigmoidCrossEntropyLossLayer类,取消下面的注释即可
//virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
//const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
2.错误分析
同样还是以这个错误为例!
其实下面这句话已经说的很明白了,意思就是在SigmoidCrossEntropyLossLayer类里面没有Backward_gpu()这个函数
device_alternate.hpp:30:39: error: no ‘void caffe::SigmoidCrossEntropyLossLayer<Dtype>::Backward_gpu(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<bool>&, const std::vector<caffe::Blob<Dtype>*>&)’ member function declared in class
所以我们只要在定义SigmoidCrossEntropyLossLayer类的地方加上这个函数即可,一般在类的定义处都会有被注释的这个函数,若是没有,手动加上即可.