【机器学习】OSX 下配置pycaffe的问题和解决方法

来源:互联网 发布:沃特沃德 知乎 编辑:程序博客网 时间:2024/05/12 16:01

首先这不是osx下caffe的安装教程,请移步官网:
http://caffe.berkeleyvision.org/installation.html
http://caffe.berkeleyvision.org/install_osx.html
遵照官网步骤之后仍然会有问题,问题和解决方法如下:

1、找不到cblas.h
如果使用的是openblas库,github给出的方案是重装openblas:brew uninstall openblas; brew install --fresh -vd openblas。安装完成之后,注意最后的提示有一段英文,大意是openblas并没有放到系统路径中,要引用openblas,必须手动将其头文件目录和库文件目录添加到路径中。提示的路径为:
LDFLAGS: -L/usr/local/Cellar/openblas/lib
CPPFLAGS: -I/usr/local/Cellar/openblas/include

如果还有问题,那么就输入cmake -DCMAKE_CXX_FLAGS=-I/usr/local/Cellar/openblas/include。然后清理,重新cmake构建。

2、输入import caffe后提示无法导入numpy
这是因为当前路径在caffe编译好的python包目录下,里面有几个文件和python本身的py文件重名了。正确导入方法是在普通目录下,将pycaffe的路径export到PYTHONPATH系统路径变量中:export PYTHONPATH={pycaffe路径}:PYTHONPATH
我的pycaffe路径在 caffe根目录/distribute/python/python/caffe下面。该目录下面还有一个caffe目录,不能用这个目录。然后进入python,导入caffe就正常了。注意在caffe编译目录下进入python,有可能import caffe不出错,但是caffe根本用不了。

3、import caffe提示segment fault 11
这个错误在github和csdn上都有讨论过,主要问题是用户mac中包含系统python和homebrew装的python这两个不同的版本,编译pycaffe时用的python版本是混乱的。解决方法是到caffe编译目录下编辑Makefile.config文件中的python相关内容,指定正确路径。cmake之后,检查弹出的信息中,python相关路径是否都指向了你指定的python路径。然后执行编译。
重新编译完成并按照问题2的解决方法配置之后,输入import caffe依然可能提示segment fault。解决方法在https://github.com/BVLC/caffe/issues/2677 中anatoliykmetyuk的回答。原因是caffe编译好的库文件,默认指向系统的python路径而不是homebrew安装的python。方法是输入install_name_tool -change {libpython2.7.dylib相关内容} {正确的libpython2.7.dylib路径} _caffe.so

4、import caffe出错:无法导入XX库
相关的提示还有@rpath:/XXX.dylib无法导入,导致libcaffe.so无法导入,看到@rpath就应该想到,库路径错了!沿着出错信息找到无法导入的库,用otool -L 命令查看该库文件的依赖项,找到包含 @rpath的依赖项,参照问题3的解决方法,用install_name_tool工具明确指定@rpath对应的依赖项的路径,直到该库的依赖项中不包含@rpath。

5、找不到veclib
osx新版本中的veclib库位置变了,我们在caffe目录输入ccmake./ ,修改vecLib_INCLUDE_DIR:PATH为/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/vecLib.framework/Headers

0 0