一、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’这一行来设定。