编者语:如果你想深入研究深度学习,强烈建议你有一块好的显卡。caffe支持cpu、gpu两个版本,强烈建议使用gpu版本训练模型(因为速度真的非常快)。由于gpu版本需要安装cuda和cudnn,所以强烈建议使用的显卡计算能力大于3.0,显卡计算能力请参考https://developer.nvidia.com/cuda-gpus。后续多显卡运行模型需要安装的nccl对于显卡的计算能力也有一定的要求(目前市面上比较普遍的有A卡和N卡,请购买N卡),强烈建议不要在虚拟机上做实验(cpu版本可以),因为据我所知虚拟机是识别不出显卡的,请选择安装双系统。

一、版本:

Linux系统:Ubuntu14.04LTS(64bit)

显卡:GTX1070

cuda:

cuda8.0 cuda-repo-ubuntu1404-8-0-local-ga2_8.0.61-1_amd64.deb

cudnn:cudnn-8.0-linux-x64-v5.1.tgz

二、下载:

Ubuntu:http://cn.ubuntu.com/download/

cuda8.0:

https://developer.nvidia.com/cuda-downloads

cudnn:

https://developer.nvidia.com/rdp/cudnn-download(注:需要注册)

gpu驱动下载:

http://www.nvidia.cn/Download/index.aspx?lang=cn

OpenCV安装脚本: https://github.com/jayrambhia/Install-OpenCV

Anaconda: https://www.continuum.io/downloads/

Caffe: https://github.com/BVLC/caffe

上述下载遇到问题,请联系QQ:944597043

三、安装

1、安装Ubuntu。本文不关注系统的安装,请读者自行百度。本文关注的是显卡驱动的安装,因为在系统安装完成以后,Ubuntu是不会安装显卡驱动的,需要自行安装驱动,而对于一些较新的显卡,在安装完驱动后都会遇到各种各样的问题,比如循环登陆,黑屏。

(1)、禁用nouveau

按Ctrl Alt F1进入命令提示符,新建一个黑名单文件:

sudo vi /etc/modprobe.d/blacklist­nouveau.conf

输入:

blacklist nouveau

options nouveau modset=0

保存退出(:wq)

然后执行

sudo update­-initramfs -u

执行 lspci | grep nouveau查看是否有内容

lspci | grep nouveau

如果没有内容 ,说明禁用成功,如果有内容,就重启一下再查看。

(2)、对于较新的显卡来说,禁用掉nouveau有时候并不能解决问题,例如本文使用的GTX1070,在禁用掉nouveau以后仍有问题,安装不上显卡驱动,解决办法就是拔掉GTX1070显卡,用一块旧点的显卡先安装上驱动,在装上1070显卡。

2、安装开发需要的依赖包

$sudo apt-get install build-essential

$sudo apt-get install libprotobuf-dev libleveldb-dev

libsnappy-dev libopencv-dev libboost-all-dev

$sudo apt-get install libhdf5-serial-dev libgflags-dev

libgoogle-glog-dev liblmdb-dev protobuf-compiler

3、安装cuda8.0

NVIDIA官方提供了两种安装方式即run安装和deb安装。本文不建议读者使用run安装,因为很容易安装失败。建议使用deb安装方法,方法如下:

$sudo dpkg -i cuda-repo-ubuntu1404-8-0-local-ga2_8.0.61-1_amd64.deb

$sudo apt-get update

$sudo apt-get install cuda

第一行中的deb请读者根据自己下载的cuda版本选择。然后编译sample

$cd /usr/local/cuda

$make all

在编译完成后找到 device_query这个执行文件并执行,如果安装成功,会显示gpu的相关信息。

4、安装cudnn

解压cudnn-8.0-linux-x64-v5.1.tgz,安装过程如下:

$tar

-zxvf cudnn-8.0-linux-x64-v5.1.tgz

$cd

cuda

$sudo

cp lib/lib* /usr/local/cuda/lib64/

$sudo

cp include/cudnn.h /usr/local/cuda/include/

接着更新cudnn文件的软连接:

$cd /usr/local/cuda/lib64/

$sudo chmod r libcudnn.so.5.1.10

$sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5

$sudo ln -sf libcudnn.so.5 libcudnn.so

$sudo ldconfig

5、安装BLAS

Caffe支持三种AtLas,分别是MKL、AtLas、OpenBlas,本文选择OpenBlas:

$sudo apt-get install libopenblas-dev

6、安装OpenCV

本文选择安装的是OpenCV2.4.10,读者也可安装其他版本,如OpenCV3.0。

$cd Install-OpenCV/Ubuntu/2.4

$sh opencv2_4_10.sh

更改环境变量:

$sudo vim /etc/bash.bashrcs

在文件的最后添加如下路径:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export PKG_CONFIG_PATH

如果遇到libEGL.so.1报错,解决方法:

$sudo mv /usr/lib/nvidia-375/libEGL.so.1

/usr/lib/nvidia-375/libEGL.so.1.org

$sudo mv /usr/lib32/nvidia-375/libEGL.so.1

/usr/lib32/nvidia-375/libEGL.so.1.org

$sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39

/usr/lib/nvidia-375/libEGL.so.1

$sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39

/usr/lib32/nvidia-375/libEGL.so.1

7、安装Caffe的python环境

本文建议使用Anaconda,下载读者需要的版本,本文下载的是linux-python2.7-64bit版本。安装命令:

$bash Anaconda2-4.3.1-Linux-x86_64.sh

请读者根据下载情况自行调节版本号。

添加Anaconda库的路径:

$vim /etc/ld.so.conf

添加

/usr/username/anaconda2/lib

注意username是读者当前的用户名而定,请自行修改。

修改~/.bashrc

$vim ~/.bashrc

在文件的最后添加如下命令:

export

LD_LIBRARY_PATH="/home/username/anaconda2/lib:$LD_LIBRARY_PATH"

8、Caffe安装

(1)进入之前下载好的Caffe源码包,进入caffe根路径下的python目录,执行如下命令:

$for req in $(cat requirements.txt); do pip install

$req;done

这是在安装caffe的python依赖库,需要安装pip。命令如下

$sudo apt-get install python-pip

(2)编译Caffe

进入caffe根目录,复制一份编译文件:

$cp Makefile.config.example Makefile.config

修改Makefile.config。

打开USE_CUDNN:=1

按照自己机器情况修改CUDA_ARCH

打开BLAS,BLAS:=open

修改python路径,全部修改为Anaconda,即打开ANACONDA_HOME,将PYTHON_INCLUDE和PYTHON_LIB改为$(ANACONDA_HOME)路径。

修改完成后然后执行编译命令:

$make all -j4

$make test

$make runtest

9、编译python wrapper

$make pycaffe

10、Pycaffe配置

(1)安装依赖库:

$sudo apt-get install python-numpy python-scipy

python-matplotlib python-sklearn python-skimage python-h5py

python-protobuf python-leveldb python-networkx python-nose

python-pandas

python-gflags Cython

$sudo apt-get install protobuf-c-compiler

protobuf-compiler

(2)依赖库编译

$cd ~/caffe

$make pycaffe

(3)添加PYTHONPATH

$sudo vim /etc/profile

在文件最后添加:

export

PYTHONPATH=/home/username/caffe/python:$PYTHONPATH

username视读者用户名而定。使之生效:

$source /etc/profile

(4)测试

$python

>>>import

caffe

如果执行import caffe后没有报错,那就恭喜你Caffe安装成功啦!!!

linux下caffe安装过程原理,caffe安装过程详解linux版本相关推荐

  1. linux在vi创建文件,Linux下创建文本文件(vi/vim命令使用详解)

    vi test.txt 或者 vim test.txt 再或者 touch test.txt vim是vi的升级版,指令更多,功能更强. 下面是收集的vim用法,当在vim里面要实现退出,首先要做的是 ...

  2. Linux如何重启oracle监听,Linux下重启oracle服务及监听器和实例详解

    一.在Linux下重启Oracle数据库及监听器: 方法1: 用root以ssh登录到linux,打开终端输入以下命令: cd $ORACLE_HOME #进入到oracle的安装目录 dbstart ...

  3. linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解

    linux下的C\C++多进程多线程编程实例详解 1.多进程编程 #include #include #include int main() { pid_t child_pid; /* 创建一个子进程 ...

  4. 创建三个并发进程linux,Linux下几种并发服务器的实现模式(详解)

    1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...

  5. dns日志级别 linux,linux下DNS服务器视图view及日志系统详解

    linux下DNS服务器视图view及日志系统详解DNS服务器ACL:在named.conf文件中定义ACL功能如同bash当中定义变量,便于后续引用 ACL格式: acl ACL名称 { IP地址1 ...

  6. 1 linux下tcp并发服务器的几种设计的模式套路,Linux下几种并发服务器的实现模式(详解)...

    1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...

  7. find linux 目录深度_浪里淘沙,详解Linux系统中Find命令的实用技巧

    知了小巷:浪里淘沙,详解Linux系统中Find命令的实用技巧. 啊哈,找到了! 当我们需要在Linux系统上定位某个文件或目录时,find命令通常是必备之选. 它使用起来非常简单,但有许多不同的可选 ...

  8. Linux下DIR,dirent,stat等结构体详解(转)

    最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅. 首先说说DIR这一结构体,以下为DIR结构体的定义: struct __dirstre ...

  9. Linux下DIR,dirent,stat等结构体详解

    最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅. 首先说说DIR这一结构体,以下为DIR结构体的定义: struct __dirstre ...

  10. Linux下select, poll和epoll IO模型的详解

    http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll 介绍 Epoll 可是当前在 Linux 下开发大规模并发网络程序的热 ...

最新文章

  1. Last_Error: Relay log read failure: Could not parse relay log event entry.
  2. T-SQL编程基础-基本语法
  3. VBA自定义函数集锦[2]
  4. android studio升级失败提示 Connection failed解决方法
  5. iPhone X 刘海打理指北
  6. 基于External-DNS的多集群Ingress DNS实践
  7. 流行歌单片机c语言编程,单片机6首音乐播放的proteus仿真电路及C语言程序设计...
  8. php怎么像git那样做diff,Git 基本操作
  9. 解决clover配置文件conf.plist中nv_disable=1或者nvda_drv=1不生效或者说不能删除的问题
  10. JavaScript数据类型之Boolean以及undefined和null(4)
  11. 学习项目管理PRINCE2有什么用??
  12. php多表查询 例子,thinkphp学习笔记之多表查询
  13. mysql 再查询结果的基础上查询(子查询)
  14. 基于51单片机的超声波红外避障捡拾小车
  15. 如何在VirtualBox中安装win7虚拟机?
  16. 自己写个基金分析系统,准确率也太高了
  17. Android页面的跳转
  18. python-matplotlib制作图表与中文正常显示
  19. 蛮荒搜神记服务器在维护,蛮荒搜神记法宝洗练图文教程 蛮荒搜神记如何提升战斗力?-游侠网...
  20. 不要签名证书将网页打包封装成苹果APP,无需苹果企业签名,IPA证书签名,ios签名证书,免越狱安装...

热门文章

  1. jdk动态代理的实现流程(事务处理)
  2. centos7安装redies
  3. python蓝牙通信_python实现蓝牙通信
  4. 前端开发者的必备好书:CSS世界三部曲,你都知道吗?
  5. 【开源】有手就能做的街机游戏
  6. Interior-point methods(内点法)学习笔记
  7. 4.FX Blue 本地跟单软件EA参数说明
  8. catia重心主惯量矩 m1_CATIA_Knowledge_Advisor_help
  9. 独立开发一个完整的小程序,你想知道的流程
  10. 安装mysql-community-server报错缺少libaio依赖