Caffe安装填坑大全

1.系统Ubuntu18.04

我一开始安装的是cuda9.1,后来发现tensorflow目前较大支持到cuda9.0,不支持cuda9.1。如果用cuda9.1需要自己编译整个tensorflow工程,因为我接下来还打算安装tensorflow,所以想了想,决定重新将cuda和cudnn升级到cuda9.0+cudnn7.0。

2.cuda安装查看:

https://blog.csdn.net/u010801439/article/details/80483036

3.cuda卸载查看:

https://blog.csdn.net/wanzhen4330/article/details/81704474

4.caffe安装过程遇到的BUG

  • protoc

错误:

.build_release/src/caffe/proto/caffe.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is

#error This file was generated by a newer version of protoc which is
修改:

命令 whereis protoc 可以查看哪些路径下安装了protoc

命令which protoc 可以查看默认选用protoc的路径

命令 protoc --version 可以查看当前protoc版本

选定2.6.1的版本来编译caffe,如果没有2.6.1自行重装一下

https://blog.csdn.net/xocoder/article/details/9155901

https://blog.csdn.net/lwplwf/article/details/76532804

指定protoc的版本可以在 Makefile文件内修改
在Makefile 中修改这两句:
$(Q)protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<
$(Q)protoc --proto_path=$(PROTO_SRC_DIR) --python_out=$(PY_PROTO_BUILD_DIR) $<

$(Q)/usr/bin/protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<
$(Q)/usr/bin/protoc --proto_path=$(PROTO_SRC_DIR) --python_out=$(PY_PROTO_BUILD_DIR) $<
即把开头的"protoc"补全路径即可 (/usr/bin/protoc即为自己向指定给的版本路径)

 

  • caffe.pb.g

错误:

fatal error: caffe/proto/caffe.pb.h: 没有那个文件或目录?

修改:

解决方法在/caffe/src/caffe/proto下打开终端输入 protoc --cpp_out=/home/lanxiao/caffe/include/caffe/ caffe.proto

不要忘记要在include/caffe下新建一个proto文件夹,且在文件夹下将caffe.pb.h复制进去。

  • compute_20

错误:

cuda9.0 caffe编译的时候报上述错误

修改:

CUDA_ARCH := #-gencode arch=compute_20,code=sm_20 \
        #-gencode arch=compute_20,code=sm_21 \
        -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_50,code=sm_50 \
        -gencode arch=compute_52,code=sm_52 \
        -gencode arch=compute_60,code=sm_60 \
        -gencode arch=compute_61,code=sm_61 \
        -gencode arch=compute_61,code=compute_61
  • opencv

错误:

cv::imread(cv::String const&, int)’未定义的引用

修改:

在 Makefile文件的最后添加:
  LIBRARIES += glog gflags protobuf leveldb snappy \
  lmdb boost_system boost_filesystem hdf5_hl hdf5 m \
  opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs opencv_videoio

  • 与c++11或gnu++11相关的问题

解决方法:

Makefile 中定位到

##############################
# Configure build
##############################

再找到

# Linux

添加:CXXFLAGS += -std=c++11

这句的作用就是将编译时用到的g++加上编译选项“ -std=c++11”,加上此编译选项后用的就是11标准,不加貌似默认的是98标准

  • make runtest

[==========] 2199 tests from 285 test cases ran. (453917 ms total)
[  PASSED  ] 2197 tests.
[  FAILED  ] 2 tests, listed below:
[  FAILED  ] BatchReindexLayerTest/2.TestGradient, where TypeParam = caffe::GPUDevice<float>
[  FAILED  ] BatchReindexLayerTest/3.TestGradient, where TypeParam = caffe::GPUDevice<double>
 2 FAILED TESTS
Makefile:532: recipe for target 'runtest' failed

make: *** [runtest] Error 1

解决办法:You have to add NVCCFLAG += -G to Makefile and do 

make clean & make all & make test & make runtest

也就是从

# Debugging
ifeq ($(DEBUG), 1)
        COMMON_FLAGS += -DDEBUG -g -O0
        NVCCFLAGS += -G
else
        COMMON_FLAGS += -DNDEBUG -O2
endif

改成

# Debugging
ifeq ($(DEBUG), 1)
        COMMON_FLAGS += -DDEBUG -g -O0
        NVCCFLAGS += -G
else
        COMMON_FLAGS += -DNDEBUG -O2
        NVCCFLAGS += -G
endif
(感谢https://blog.csdn.net/u013848769/article/details/80026602

  • caffe编译报错 cudnn.hpp:127:41: error: too few arguments to function ‘cudnnStatus_t cudnnSetPooling2dDescriptor

  • 这是因为当前版本的caffe的cudnn实现与系统所安装的cudnn的版本不一致引起的。

    解决办法:

    1.将./include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudnn.hpp.

    2. 将./include/caffe/layers里的,所有以cudnn开头的文件,例如cudnn_conv_layer.hpp。   都替换成最新版的caffe里的相应的同名文件。

    3.将./src/caffe/layer里的,所有以cudnn开头的文件,例如cudnn_lrn_layer.cu,cudnn_pooling_layer.cpp,cudnn_sigmoid_layer.cu。

       都替换成最新版的caffe(可以从github上找一个最新的,替换本地的)里的相应的同名文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值