caffe安装_工欲善其事|Caffe编译问题记录

简介

现在caffe用的越来越少了,但是由于如下的两个原因,还有可能偶尔会被用到:

  1. 一些旧模型可能是用caffe生成的,临时需要用一下;
  2. caffe的源码结构写得非常清晰,而且其编译链接过程据说会很锻炼内功。

因此,还会偶尔编译caffe。现在将遇到的各种坑简单的记录下来,并供以后汲取营养。

ubuntu16.04系统,CUDA9.0 CUDNN 7 编译caffe 流程

参见如下的方法即可:

  1. Ubuntu16.04 在cuda9.0环境下编译caffe; https://blog.csdn.net/zhuangwu116/article/details/81169700
  2. Ubuntu18.04配置Caffe环境(cudn9.0 + cudnn7 GPU版)&&Ubuntu16.04可用 https://blog.csdn.net/qq_31261509/article/details/78755968
  3. Ubuntu16.04 安装 Caffe: http://wgshun.top/2018/06/ubuntu-install-caffe/

上面这几个互相参考即可。

遇到的错误1

  1. 一度一直报错:“/usr/include/c++/5/bits/c++0x_warning.h:32:2:error: #error This file requires compiler and library supportfor the ISO C++ 2011 standard. Thissupportmust be enabled with the -std=c++11 or -std=gnu++11compileroptions.“一直不知道时什么原因,后来发现只有在编译cu文件的时候财报这个错误,发现时是在配置cuda的时候报错。这是编译器没有指定
  2. 后来在make runtest 和 make pycaffe的时候也报了类似的错误;

错误1解决方案

在Makefile里面找到如下的内容,并添加上-std=c++11

CXXFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) -std=c++11
LINKFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11

遇到的错误2

caffe和pycaffe都编译成功之后,在pycaffe里面import caffe始终报如下的错误:

[PYCAFFE] TypeError: __init__() got an unexpected keyword argument 'syntax'

经过检索,发现是系统的protobuf版本不吻合导致的。

用如下命令查看查看系统的protobuf:

protoc --version

查看哪些路径安装了protobuf:

whereis protoc

查看默认调用的是哪一个:

which protoc

显示目前版本为3.8.0。而根据如下的帖子,https://github.com/BVLC/caffe/issues/2092 ,基本可以判定,caffe需要的版本为2.6.1,上述错误是由于版本不对导致的。解决办法是必须要将系统中所有的protobuf全部删除,然后重新装一个2.6.1版本。删除的方法是(https://blog.csdn.net/l297969586/article/details/80527317):

sudo apt-get remove libprotobuf-dev
sudo apt-get remove protobuf-compiler
sudo apt-get remove python-protobuf
sudo rm -rf /usr/local/bin/protoc
sudo rm -rf /usr/bin/protoc
sudo rm -rf /usr/local/include/google
sudo rm -rf /usr/local/include/protobuf*
sudo rm -rf /usr/include/google
sudo rm -rf /usr/include/protobuf*

以下三行慎用!
sudo rm -rf /usr/local/lib/libproto*
sudo rm -rf /usr/lib/libproto*
sudo rm -rf /usr/lib/x86_64-linux-gnu/libproto*

之后就可以重新开始安装:

下载protobuf2.6.1的安装包之后,编译安装:

$ cd protobuf-2.6.1
$ ./configure
$ make all
$ sudo make install

为了python能够调用,还需要安装python接口,否则在调用pycaffe时,import caffe会报如下错误:

ImportError: No module named google.protobuf.internal

安装方法:

在protobuf2.6.1.的路径下:

cd ./python 
python setup.py build 
python setup.py test 
python setup.py install
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值