caffe常见问题及解决方法

一、make all编译报错

1、指定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

错误原因:
protoc存在多个版本,需要指定新版本的protoc来进行编译(或需要清理build文件夹、.build_release文件夹)
解决方法:
①查看系统安装了哪些版本的protoc

#查看哪些路径下安装了protoc
whereis protoc
#查看默认选用protoc的路径
which protoc
#查看当前protoc版本
 protoc --version

②修改Makefile指定protoc版本

$(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即为自己向指定给的版本路径)

2、 fatal error: hdf5.h

问题描述:

PROTOC src/caffe/proto/caffe.proto
CXX .build_release/src/caffe/proto/caffe.pb.cc
CXX src/caffe/parallel.cpp
CXX src/caffe/solver.cpp
In file included from src/caffe/solver.cpp:9:0:
./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: No such file or directory
compilation terminated.
Makefile:581: recipe for target '.build_release/src/caffe/solver.o' failed
make: *** [.build_release/src/caffe/solver.o] Error 1

解决方法:
①修改Makefile.config,添加红色字体的内容

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

②清理build和.build_release两个文件夹后重新make all即可

3、nvcc warning : The ‘compute_20’, ‘sm_20’, and ‘sm_21’ architectures are deprecated

问题描述:
nvcc warning : The ‘compute_20’, ‘sm_20’, and ‘sm_21’ architectures are deprecated
原因是,Makefile中采用了CUDA的compute capability 2.0和2.1,这是两种计算能力。安装的CUDA版本是8.0,但 从CUDA 8.0开始compute capability 2.0和2.1被弃用了,所以可以将-gencode arch=compute_20,code=sm_20 和-gencode arch=compute_20,code=sm_21这两行删除即可。

解决方法:
①修改Makefile.config,删除红色字体的内容

-gencode arch=compute_20,code=sm_20 和-gencode arch=compute_20,code=sm_21

②清理build和.build_release两个文件夹后重新make all即可

4、/usr/bin/ld: cannot find -lhdf5_hl

解决方法:
①修改Makefile

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

替换成

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

②清理build和.build_release两个文件夹后重新make all即可

5、build_release/lib/libcaffe.so:undefined reference to cv::imread(cv::String const&,int)

解决方法:
①修改Makefile.config,把以下几个配置项的注释去掉

USE_CUDNN :=1
WITH_PYTHON_LAYER:=1
#默认是opencv2
OPENCV_VERSION :=3

②清理build和.build_release两个文件夹后重新make all即可

二、digits

1、修改digits端口

默认情况下,digits的安装目录为 /usr/share/digits(/usr/bin/digits-devserver),默认端口为80。在安装完毕后自动启动了。
使用digits-devserver启动(默认端口为5000)

cd /usr/bin
sudo ./digits-devserver -p 10000
#后台运行
sudo nohup ./digits-devserver -p 10000
使用digits-devserver -p 10000指定端口
2、下载mnist数据

默认情况下,下载的main.py脚本存放在

/usr/share/digits/tools/download_data/main.py  

如果找不到,可以通过find命令找出来。
执行main.py脚本下载数据

sudo python /usr/lib/python2.7/dist-packages/digits/download_data/__main__.py mnist ~/mnist

参考链接
https://www.cnblogs.com/denny402/p/5136155.html

3、修改digits的任务空间

默认情况下,digits图片转换和训练model的空间放在
/usr/lib/python2.7/dist-packages/digits/jobs目录下,可以通过修改
/usr/lib/python2.7/dist-packages/digits/config/jobs_dir.py来切换任务存放目录。

从脚本中可以看出,也可以通过设置环境变量DIGITS_JOBS_DIR来设定任务空间。尝试在/etc/profile中设定该环境变量,依然无效。无奈在脚本后面加多了value = ‘/data/digits/jobs’这一行来设定。
在这里插入图片描述

4、使用GoogLeNet,可适当调整Batch size,调低能提升精准度。低到一定的值也会有反差。例如30到50之间比较合适
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值