CentOs编译caffe的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOs编译caffe的问题相关的知识,希望对你有一定的参考价值。

按照网上的教程配置好caffe的环境后

make all -j8

最后出现

non-virtual thunk to caffe::BasePrefetchingDataLayer< float > InternalThreadEntry ()

 

最后各种查找,google,竟然在http://discuss.cocos2d-x.org/t/error-non-virtual-thunk-to-cocos2d-cclayer-cctouchbegan/9061中一个

回答中找到了一个回答,是由于多类继承中导致了时间上的问题

一想,应该是开始用多线程编译的时候出现的,也比较奇怪,在ubuntu14.04 TLS就没有这个问题

最后将原来编译的全部clean掉,之前有试过用单线程编译,但是忘记了clean,最后导致问题

make clean

make all

就行了

补充。之前在编译到33%时遇到一个奇葩的问题,\caffe-master\src\caffe\layers\base_conv_layer.cpp中出现一个类ConvolutionParameter 识别不了

namespace caffe {

template <typename Dtype>
void BaseConvolutionLayer<Dtype>::LayerSetUp(const vector<Blob<Dtype>*>& bottom,
const vector<Blob<Dtype>*>& top) {
CHECK_EQ(4, bottom[0]->num_axes()) << "Input must have 4 axes, "
<< "corresponding to (num, channels, height, width)";
// Configure the kernel size, padding, stride, and inputs.
ConvolutionParameter conv_param = this->layer_param_.convolution_param();
CHECK(!conv_param.has_kernel_size() !=
!(conv_param.has_kernel_h() && conv_param.has_kernel_w()))
<< "Filter size is kernel_size OR kernel_h and kernel_w; not both";
CHECK(conv_param.has_kernel_size() ||
(conv_param.has_kernel_h() && conv_param.has_kernel_w()))
<< "For non-square filters both kernel_h and kernel_w are required.";
CHECK((!conv_param.has_pad() && conv_param.has_pad_h()
&& conv_param.has_pad_w())
|| (!conv_param.has_pad_h() && !conv_param.has_pad_w()))
<< "pad is pad OR pad_h and pad_w are required.";
CHECK((!conv_param.has_stride() && conv_param.has_stride_h()
&& conv_param.has_stride_w())
|| (!conv_param.has_stride_h() && !conv_param.has_stride_w()))
<< "Stride is stride OR stride_h and stride_w are required.";
if (conv_param.has_kernel_size()) {
kernel_h_ = kernel_w_ = conv_param.kernel_size();
} else {
kernel_h_ = conv_param.kernel_h();
kernel_w_ = conv_param.kernel_w();
}
CHECK_GT(kernel_h_, 0) << "Filter dimensions cannot be zero.";
CHECK_GT(kernel_w_, 0) << "Filter dimensions cannot be zero.";
if (!conv_param.has_pad_h()) {
pad_h_ = pad_w_ = conv_param.pad();
} else {
pad_h_ = conv_param.pad_h();
pad_w_ = conv_param.pad_w();
}

最后定位到将build/caffe/proto/caffe.pb.h拷进/include中就过去了

 

 

以上是关于CentOs编译caffe的问题的主要内容,如果未能解决你的问题,请参考以下文章

编译caffe-lstm问题

直接编译caffe出现的两个问题

win10上安装caffe,编译libcaffe遇到这个问题,有大佬知道怎么解决吗?

糟心的caffe+ matlab编译路程

caffe编译出现的新错误

windows编译caffe2遇到的问题