20160512关于mac安装caffe的记录

记得2015年在mac系统上安装过一次caffe,非常顺利,但是最近群里许多同学反映mac安装caffe出现了各种问题,同时我也在帮助别人安装caffe的时候也遇到了一些坑,不再像以前这么顺利了。估计与操作系统,caffe升级有关。
今晚我重新装了一遍caffe,记录下了整个安装过程,希望对各位同学有用。
mac os 版本:10.11.4
xcode 版本: 7.2

1. 安装Homebrew

homebrew是一个包管理器,是用来安装各种包的安装器。安装方法也很简单,直接看主页吧。http://brew.sh。

2. 安装cuda,xcode

这个也不需要我多说了,cude官网https://developer.nvidia.com/cuda-downloads。
xcode直接在app store里面安装。
安装好了之后在bashrc里面将下面两行添加进去,注意版本号的区别,我这里是7.0的版本,现在已经出了7.5的版本了,建议添加之前ls看看有不有这个目录。

export PATH=/Developer/NVIDIA/CUDA-7.0/bin:$PATH
export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA-7.0/lib:$DYLD_LIBRARY_PATH

3. 各种依赖

这个也很简单,在命令行复制下面的语句执行即可。

for x in snappy leveldb gflags glog szip hdf5 lmdb homebrew/science/opencv;
dobrew uninstall $x;brew install --fresh -vd $x;
done
brew uninstall --force protobuf; brew install --with-python --fresh -vd protobuf
brew uninstall boost boost-python; brew install --fresh -vd boost boost-python

4. 下载caffe修改配置

git clone https://github.com/BVLC/caffe.git
cd caffe
cp Makefile.config.example Makefile.config

5. 安装caffe

mkdir build
cd build
cmake -DCPU_ONLY=ON ..

6. 继续安装

make all -j8

开始遇到一些坑了。
①提示我没有装hdf5,之前我的语句是有安装的,不过既然提醒我没有,那就再装一遍吧。

brew install hdf5

②提示cblas.h没有。安装brew install openblas,然后brew link openblas –force
③接着make all -j8,提示我这个
这里写图片描述
vecLib没有,这个的修改下CMakeCache.txt文件,不过改之前大家养成好习惯ls看看有不有这个目录
/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Versions/Current/Headers

//vecLib include directory
vecLib_INCLUDE_DIR:PATH=/System/Library/Frameworks/vecLib.framework/Headers

改为

//vecLib include directory
vecLib_INCLUDE_DIR:PATH=/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Versions/Current/Headers

7 The Last

最后make all -j8 结束,就make runtest,结果如下图,应该没什么问题了。
这里写图片描述

8 Pycaffe安装

因为make all是相当于已经执行过了make pycaffe的。但是我这里将

export PYTHONPATH=/Users/ericxu/gitproj/caffe/python:$PYTHONPATH

加入到bashrc里面之后,在python中执行import caffe,报错,错误为segmentation fault :11。
为了解决这个问题,也查询了许多资料。其中比较有意思的如下:
1. http://blog.csdn.net/huangynn/article/details/50898661
2. http://www.jeepshoe.org/989268822.htm
3. https://github.com/BVLC/caffe/issues/591
最后得出一个结论就是,python配置的问题。具体体现在下面两点:
1. caffe目录下面的文件Makefile.config里面有段话:

NOTE: this is required only if you will compile the python interface.

这个就是需要修改的地方,其中PYTHON_LIB和PYTHON_INCLUDE特别关键,需要根据自己机器的python环境修改。一般来说有3种python环境,系统自带,brew安装,Anaconda带的。我找到自己机器的python路径为:/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib和/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/include/python2.7,上述分别为lib和include。
2. 在安装caffe的时候,需要执行cmake ..,然后系统会输出python的环境配置。比如这样:
这里写图片描述
很明显有问题,为啥Libraries还是2.7.10,和Interpreter版本根本不匹配,照理说我在Makefile.config修改了应该生效呀。这里先不管了,我直接修改build/CMakeCache.txt吧。
修改的地方截图如下:
这里写图片描述
这里写图片描述
这里写图片描述
修改完毕,然后重新make all -j8,就可以了。
最后make pytest也通过了。

9 复现NeuralStyle

既然安装好了caffe,那么使用caffe,复现下NeuralStyle吧。
这里只放出最后的成果,模型用的googlenet。
这里写图片描述
这里写图片描述
这里写图片描述

转载于:https://www.cnblogs.com/feitongxunke/p/20160512guan-yumac-an-zhuangcaffe-de-ji-lu.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python学习笔记(二)

2019独角兽企业重金招聘Python工程师标准>>> pickle #腌制 pickle.dump() #保存数据 pickle.load() #恢复数据 locals() # 返回当前作用域中的变量集合 with语句会自动处理所有已打开文件的关闭工作,类似C#中的using() >>> data[5,78,3,45,7,1]…

mac:在当前文件夹打开terminal终端

From: http://www.cnblogs.com/yjmyzz/p/3662507.html System Preferences -> Keyboard -> Shortcuts -> Services -> New Terminal at Folders/New Terminal Tab at Folder 这二项都勾上 然后在Finder中,在任何目录上右击->service就能看到进入terminal的选项

自定义控件(视图)2期笔记13:View的滑动冲突之 内部拦截法

1. 内部拦截法: 父容器不拦截事件,所有的事件全部都传递给子元素,如果子元素需要此事件就直接消耗掉,否则就交给父容器进行处理。 这种方法和Android中的事件分发机制不一样,需要配合requestDisallowInterceptTouchEve…

微信小程序图片加载太慢;uni-app微信小程序加载图片优化;微信小程序图片image加载成功事件@load;图片加载成功触发@load事件

场景: 微信小程序,对于以下较大的图片(例如几M),在真机运行时候加载比较慢,此时会有一个比较长时间的白屏,体验很差。 解决方案:图片未加载成功前,进行loading…;图片加载…

循环队列及C语言实现一

循环队列是为了充分利用内存,进行数据操作的一种基本算法。具体实现方式可划分为:链式队列和静态队列,这里所谓的静态是指在一片连续的内存区域进行数据操作。本文只讲述静态队列,也是最简单的实现方式,链式队列以及链…

微信小程序自定义导航栏;uni-app微信小程序自定义顶部导航栏;微信小程序顶部导航栏高度;微信小程序左上角胶囊按钮;uni-app微信小程序左上角胶囊设置

本文是自定义微信小程序的顶部导航栏;自定义微信小程序底部导航栏tabBar看另外这篇 文末的两个文件代码可以直接复制使用 自定义导航栏页图 一、场景: 有些时候,微信小程序需要我们在导航栏做更多的操作样式(例如高度、颜色、加…

HTML5与HTML4的比较

HHTML5封装一些标签和属性&#xff0c;方便了开发。 1 <form> 2 <p> 3 <label>Username:<input name"search" type"text" id"search" autofocus></label> 4 </p> 5 &l…

[iOS]Unable to run app in Simulator

From: http://blog.csdn.net/snowwind/article/details/41099575 今天在试Admob的时候&#xff0c;发现在simulator上&#xff0c;程序突然不能运行了&#xff0c; 提示 [plain] view plaincopy Unable to run app in Simulator An error was encountered while running (…

uni-app微信小程序动态样式设置;微信小程序style行内式无效;微信小程序style行内式编译报错;微信小程序:style设置样式

场景&#xff1a;微信小程序设置动态样式&#xff0c;有些时候是需要用到变量来书写的&#xff1b;但是实际使用发现&#xff0c;行内式书写虽然有效&#xff0c;但是会使得微信小程序的编辑失败&#xff1b;故需要使用动态的v-bind来写动态变量行内式样式&#xff08;既使用:s…

循环队列及C语言实现二

在我的上一篇博文中已经讲到循环队列的特点作用以及C语言实现&#xff0c;当然实现和操作的方式比较简单&#xff0c;在实际项目应用中略显粗糙。因此&#xff0c;这一篇提供一个进阶篇的实现与操作接口。具体函数作用可以参见我的注释部分&#xff0c;使用的时候直接把里面的接…

MAC下secureCRT无法保存密码的解决方法

From: http://www.php230.com/securecrt-for-mac-store-password.html 在mac下新安装了secureCRT&#xff0c;取代系统自带的终端工具&#xff0c;主要是为了方便链接服务器。 mac下面的secureCRT默认保存不上密码&#xff0c;我们选择了保存密码后&#xff0c;下次登录还是提…

微信小程序下拉刷新列表onPullDownRefresh;微信小程序上划加载列表onReachBottom;uni-app微信小程序下拉加载数据;uni-app微信小程序上划页面加载数据

需求&#xff1a;微信小程序列表加载有两种方式&#xff0c;分别是按住页面下拉加载数据数据&#xff08;触发onPullDownRefresh&#xff09;和直接上划滚动页面到底部加载数据&#xff08;触发onReachBottom函数&#xff09;。 本文主要是使用上划滚动页面触底加载数据&#x…

ARP协议在同网段及跨网段下的工作原理

一、ARP在同个网段下的工作原理 首先&#xff0c;每台主机都会在自己的ARP缓冲区中建立一个 ARP列表&#xff0c;以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时&#xff0c;会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址&#xff0…

如何查看服务器当前的负载信息

From: http://blog.csdn.net/mal327/article/details/7423750 如何查看服务器当前的负载信息http://www.flybaaa.com/help/69_1.html网吧内突然很卡&#xff0c;这个情况我相信大家都有遇见过&#xff0c;但是通过什么方法来排查是否linux服务器的负载过大导致的这个问题呢&am…

Realtek网卡如何识别具体型号是8111B/8111C/8111D还是8111E???

From: http://support.icafe8.com/technologynews/focus/1347.html 貌似在去年&#xff0c;Realtek网卡把型号都统一为Realtek GBE什么什么的这种名字&#xff0c;这个修改说实话&#xff0c;对有盘没啥影响&#xff0c;只要驱动装好&#xff0c;能上网就ok了&#xff0c;但是…

【leetcode77】Single Number

一题目描述&#xff1a; 给定一个数组&#xff0c;只有一个数字出现一次&#xff0c;其余都是两次&#xff0c;判断那个数字 思路&#xff1a; 不断取出数据进行异或&#xff0c;最后一个数字&#xff0c;因为相同的数字会抵消代码&#xff1a; public class Solution {public …

Remoting-1

什么是Remoting&#xff0c;简而言之&#xff0c;我们可以将其看作是一种分布式处理方式。从微软的产品角度来看&#xff0c;可以说Remoting就是DCOM的一种升级&#xff0c;它改善了很多功能&#xff0c;并极好的融合到.Net平台下。Microsoft .NET Remoting 提供了一种允许对象…

DEBUG 调试

1.Step Into (also F5) 跳入 2.Step Over (also F6) 跳过 3.Step Return (also F7) 执行完当前method&#xff0c;然后return跳出此method 4.step Filter 逐步过滤 一直执行直到遇到未经过滤的位置或断点(设置Filter:window-preferences-java-Debug-step Filtering) 5.resume 重…

promise使用详解

原文链接以及promise练习题 先说结论&#xff1a; promise是解决异步函数的一种方案 将异步操作以同步方式展现出来 避免了回调地狱 1.三种状态&#xff1a;padding–等待 resolved–成功–then rejected–失败–catch 2.promise上有then和catch方法 then接受一个参数是函数 这…