caffe是一个深度学习的库,相信搞深度学习的话,不是用这个库就是用theano吧。要想使用caffe首先第一步就是要配置好caffe的环境。在这里,我主要说的是在debian的linux环境下如何配置好caffe的库。因为python编写程序比较方便,在文章最后,我还会具体说明如何配置python环境。本文章为本人原创,部分内容整理自网络,若有不妥之处请联系本人删除。非盈利性质网站转载请在文章开头处著名本文作者:77695,来源http://www.cnblogs.com/cj695/。盈利性质网站转载请与作者联系,联系方式在文章后面。如未联系,本人将通过一切可能且合法的途径追缴相应稿酬。请在转载时保留此声明。

1、前期准备

首先从github上下载好caffe库:https://github.com/BVLC/caffe,解压,得到这些东西

使用这一句话创建一个makefile.config的副本

接下来就是修改makefile.config,在这个文件里面对应的注释讲的很清楚,需要哪一项,吧对应那一项前面“#”去掉就好了

先拿make all测试,提示错误如下:

make: protoc:命令未找到
make: *** [.build_release/src/caffe/proto/caffe.pb.h] 错误 127

2、编译以及安装protoc

那就下载protobuf吧,在github下载,解压https://github.com/google/protobuf:

运行

$ ./autogen.sh

原来先要安装curl:额,貌似curl安装不成功那就跳过吧。因为curl祈祷的作用就是下载文件,但https://googletest.googlecode.com/files/gtest-1.7.0.zip这个东西还是要下,那就直接下载吧,可能需要科学上网,这个方法那就八仙过海各显省通,我就不赘述。

下载好以后把压缩包移动过去。

找到对应位置注释掉curl

再次运行,提示错误

./autogen.sh: 40: ./autogen.sh: autoreconf: not found

原因是没安装 automake 工具

运行命令安装:sudo apt-get install autoconf automake libtool

再一次./autogen.sh,成功!然后依次运行以下命令

$ ./configure
$ make
$ make check
$ make install
执行完make check以后出现:

就说明没什么问题了,就可以继续执行make install

执行完以后切换到caffe目录,先make clean一下,接着make all

还是提示找不到库,

3、安装一系列依赖库

再执行安装一些库:sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev,稍等

再执行make clean,接着make all,提示:

./include/caffe/common.hpp:5:27: fatal error: gflags/gflags.h: 没有那个文件或目录。说明protobuf的库已经差不多了。

4、安装gflags

这里继续安装gflags:https://github.com/schuhschuh/gflags/archive/master.zip下载。解压

cd gflags-master mkdir build && cd build export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1 make sudo make install在执行第三句话的时候可能会提示版本较低,直接在这里

http://www.cmake.org/install/

下载最新版本的cmake就好了(下载.sh的文件直接运行就可以了)。要配置一下环境变量

然后接着执行下面两条命令,就好了。弄完之后继续切换到caffe目录,先make clean一下,接着make all

./include/caffe/util/mkl_alternate.hpp:11:19: fatal error: cblas.h: 没有那个文件或目录
compilation terminated.

说明gflag安装成功了,

5、编译安装ATLAS

接下来开始搞定cblas的问题。BLAS(Basic Linear Algebra Subprograms,基础线性代数程序集)是一个应用程序接口(API)标准。他的实现有很多,caffe用的是其中的三种实现ATLAS, MKL, or OpenBLAS.这里我准备使用ATLAS:http://sourceforge.net/projects/math-atlas/files/ 先下载,解压。按照官方文档写的,依次执行如下命令

首先选择高性能cpu模式:

/usr/bin/cpufreq-selector -g performance然后在ATLAS目录下建立文件夹 mkdir Linux_C2D64SSE3 # create BLDdir cd Linux_C2D64SSE3 # enter BLDdir

../configure -b 64 -D c -DPentiumCPS=2800 -Fa alg -fPIC --with-netlib-lapack-tarfile=/home/haiyu/Programs_Install/lapack-3.5.0.tgz --prefix=/usr/local/atlas
粗体参数需要根据个人系统修改:
-b 指定编译出库的类型(32位库还是64位库)
       -D c -DPentiumCPS 是指定你的CPU的时钟频率,可以通过 grep MHz /proc/cpuinfo 得到
       -Fa alg -fPIC 得到与位置无关的代码,生成动态的共享库
       --prefix 为安装路径
       --with-netlib-lapack-tarfile 则是lapack压缩包路径

make build # tune & build lib make check # sanity check correct answer make ptcheck # sanity check parallel make time # check if lib is fast make install # copy libs to install dir

这里还需要一个lapack的库,在这里下载http://www.netlib.org/lapack/,下载之后直接把/home/whaley/dload/lapack-3.4.1.tgz替换成对应的路径就好了

在执行../configure的时候,会提示gfortran:命令未找到,直接用apt-get安装即可。然后make build之后就可以休息去了。等一个小时再过来看吧。

ok。。现在是第二天。昨天晚上凌晨3点的时候终于看到它提示DONE了。这速度。太!“快”!了!继续执行接下来的命令几个可以忽略的就忽略了,然后再切换到CAFFE目录make clean/all,依旧提示

但这个时候在atla的prefix指定的安装路径下已经有include/cblas.h

执行这两条,添加目录到include环境变量

6、安装lmdb

接着make,提示错误lmdb没装

git clone git://gitorious.org/mdb/mdb.git

cd mdb/libraries/liblmdb

make && make install

运行完,再回到caffe目录编译

提示:

AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so
/usr/bin/ld: cannot find -lcblas
/usr/bin/ld: cannot find -latlas
collect2: error: ld returned 1 exit status

7、安装其他依赖包

解决办法:安装这些包

apt-get install libatlas-dev
apt-get install liblapack-dev
apt-get install  libatlas-base-dev

问题解决

又提示这个错误.build_release/lib/libcaffe.so: undefined reference to `google::protobuf,重新编译protobuf

make uninstall
make clean

./configure --prefix=/usr
make
make check
make install
搞定,返回caffe,编译成功!!!!!!!!!!!!!此处有掌声!!!!!

然后把目录添加到PYTHON环境变量就行了

export PYTHONPATH=$PYTHONPATH:/home/cj695/protobuf/python/
最后还要找到protobuf的Python目录

python setup.py build
python setup.py test
python setup.py install
安装一下
激动人心的一颗来了!!!!!!!!!!!打开python,import caffe。。这一刻,我哭了!!!!!!!!!!!!!

8、总结一下

耗费两天时间,卡时间比较多的主要有两个地方,首先查错一定要从上往下查。基本上最上面的错误才是最根本的错误;其次,在安装过程中对配置做过的修改一定要记清楚,别自己把安装路径改了结果还不知道是怎么回事。

另外,如果在安装gflags的时候出现问题,可以实验一下用apt-get安装gflag,命令如下:

sudo apt-get install python-gflags

caffe的配置大概也就这些内容,希望这篇文章能够对你有所帮助

linux下caffe编译以及python环境配置手记相关推荐

  1. 【泡咖啡1】linux下caffe编译以及python环境配置手记

    caffe是一个深度学习的库,相信搞深度学习的话,不是用这个库就是用theano吧.要想使用caffe首先第一步就是要配置好caffe的环境.在这里,我主要说的是在debian的linux环境下如何配 ...

  2. Linux下JDK的安装与环境配置

    Linux下JDK的安装与环境配置 一.准备工作 将JDK安装包上传或下载至Linux 提示: 在windows地址栏输入cmd后回车,可在当前路径下打开cmd窗口 # 方法一: 使用scp命令本地上 ...

  3. linux下svn客户端安装及环境配置

    一.svn客户端安装及环境配置. 果所在的linux机器上没有安装svn客户端,则首先安装svn客户端: 1. subversion-1.4.3.tar.bz2  subversion-deps-1. ...

  4. Linux下安装SOAR及相关环境配置

    前言 SOAR(SQL Optimizer And Rewriter)是一个对SQL进行优化和改写的自动化工具. 由小米人工智能与云平台的数据库团队开发与维护 Github https://githu ...

  5. Linux下Maven编译工具的安装配置与打包

    Maven介绍  Maven是意第绪语,意思是"知识的积累者",最初是为了简化Jakarta Turbine项目中的构建过程.有几个项目,每个项目都有自己的Ant构建文件,所有项目 ...

  6. linux下svn客户端安装及环境配置(转)

    一.    源文件编译安装.源文件共两个,为: 1.   下载subversion源文件 subversion-1.6.1.tar.gz http://d136.d.iask.com/fs/800/1 ...

  7. 阿里云Linux下python3的安装及环境配置(详细教程)

    文章目录 一.yum安装依赖 二.下载安装 三.加入command 四.更换国内镜像 五.备注 一.yum安装依赖 由于yum需要 linux系统自带python2.7.5 yum -y instal ...

  8. 在linux下安装VITIS-AI人工智能开发环境配置

    步骤一.docker环境搭建 由于 apt 官方库里的 docker 版本可能比较旧,所以先卸载可能存在的旧版本: User:$ sudo apt-get remove docker docker-e ...

  9. Linux下Node.js安装及环境配置

    第一步:通过uname -a 命令查看到Linux系统的版本(备注:x86_64表示64位系统,i686 i386表示32位系统) 第二步:找到对应版本的node.js进行下载 第三步: 在/home ...

最新文章

  1. Java中如何引用另一个类里的集合_【18期】Java序列化与反序列化三连问:是什么?为什么要?如何做?...
  2. qsort(),sort()排序函数
  3. 北京卫生中级英语计算机考试成绩查询,2019年北京卫生专业技术资格成绩查询时间及入口...
  4. mybatis-plus逻辑删除数据后依然能够查出该数据
  5. findbugs, checkstyle, pmd的myeclipse7.5+插件安装(转:http://blog.csdn.net/priestmoon/article/details/63941)
  6. OLI 课程 Java入学考试的五道题
  7. Harbour.Space Scholarship Contest 2021-2022 F. Pairwise Modulo 逆向思维 + 树状数组
  8. Python中的append()和extend()
  9. 搜索连接字符串存储过程【原创】
  10. 如何选择程序设计语言
  11. JDK动态代理实现原理详解(源码分析)
  12. MySQL Innodb引擎和MyIASM引擎的区别
  13. 想要你的HTTP稳定不蹦,必须吃透「负载均衡」
  14. csv文件的读写--示例
  15. 比较新旧两个CMDB库,列出要删除的编号,要更新的编号,要添加的编号。
  16. 【正点原子MP157连载】第二章 ATK-STM32MP157烧写系统-摘自【正点原子】STM32MP157快速体验
  17. 卸载python2.7_Office卸载工具官方版
  18. 【分立元件】电感器(inductor)——简介
  19. Oblog博客系统存在SQL注入漏洞http://www.anqn.com
  20. Java Web调用Matlab实现在线绘图

热门文章

  1. 快手-开眼快创 Flutter 实践
  2. Map和Set,简单模拟实现哈希表以及哈希表部分底层源码的分析
  3. 路由器无法登上管理IP地址
  4. 十年匠心,让国漫精致到羽翼丰满!《老鹰抓小鸡》幕后制作分享
  5. python控制鼠标移动
  6. java 中prehandle_Spring MVC中拦截器HandlerInterceptorAdapter中的preHandle方法
  7. A2. Gsensor调试
  8. RT-Thread 模拟器 simulator 搭建 LVGL 的开发调试环境
  9. tipask 问答系统 如何设置第三方一键登录
  10. php 表格序号,excel自动生成序号、编号