linux下caffe安装过程原理,caffe安装过程详解linux版本
编者语:如果你想深入研究深度学习,强烈建议你有一块好的显卡。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/blacklistnouveau.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版本相关推荐
- linux在vi创建文件,Linux下创建文本文件(vi/vim命令使用详解)
vi test.txt 或者 vim test.txt 再或者 touch test.txt vim是vi的升级版,指令更多,功能更强. 下面是收集的vim用法,当在vim里面要实现退出,首先要做的是 ...
- Linux如何重启oracle监听,Linux下重启oracle服务及监听器和实例详解
一.在Linux下重启Oracle数据库及监听器: 方法1: 用root以ssh登录到linux,打开终端输入以下命令: cd $ORACLE_HOME #进入到oracle的安装目录 dbstart ...
- linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解
linux下的C\C++多进程多线程编程实例详解 1.多进程编程 #include #include #include int main() { pid_t child_pid; /* 创建一个子进程 ...
- 创建三个并发进程linux,Linux下几种并发服务器的实现模式(详解)
1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...
- dns日志级别 linux,linux下DNS服务器视图view及日志系统详解
linux下DNS服务器视图view及日志系统详解DNS服务器ACL:在named.conf文件中定义ACL功能如同bash当中定义变量,便于后续引用 ACL格式: acl ACL名称 { IP地址1 ...
- 1 linux下tcp并发服务器的几种设计的模式套路,Linux下几种并发服务器的实现模式(详解)...
1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...
- find linux 目录深度_浪里淘沙,详解Linux系统中Find命令的实用技巧
知了小巷:浪里淘沙,详解Linux系统中Find命令的实用技巧. 啊哈,找到了! 当我们需要在Linux系统上定位某个文件或目录时,find命令通常是必备之选. 它使用起来非常简单,但有许多不同的可选 ...
- Linux下DIR,dirent,stat等结构体详解(转)
最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅. 首先说说DIR这一结构体,以下为DIR结构体的定义: struct __dirstre ...
- Linux下DIR,dirent,stat等结构体详解
最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅. 首先说说DIR这一结构体,以下为DIR结构体的定义: struct __dirstre ...
- Linux下select, poll和epoll IO模型的详解
http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll 介绍 Epoll 可是当前在 Linux 下开发大规模并发网络程序的热 ...
最新文章
- Last_Error: Relay log read failure: Could not parse relay log event entry.
- T-SQL编程基础-基本语法
- VBA自定义函数集锦[2]
- android studio升级失败提示 Connection failed解决方法
- iPhone X 刘海打理指北
- 基于External-DNS的多集群Ingress DNS实践
- 流行歌单片机c语言编程,单片机6首音乐播放的proteus仿真电路及C语言程序设计...
- php怎么像git那样做diff,Git 基本操作
- 解决clover配置文件conf.plist中nv_disable=1或者nvda_drv=1不生效或者说不能删除的问题
- JavaScript数据类型之Boolean以及undefined和null(4)
- 学习项目管理PRINCE2有什么用??
- php多表查询 例子,thinkphp学习笔记之多表查询
- mysql 再查询结果的基础上查询(子查询)
- 基于51单片机的超声波红外避障捡拾小车
- 如何在VirtualBox中安装win7虚拟机?
- 自己写个基金分析系统,准确率也太高了
- Android页面的跳转
- python-matplotlib制作图表与中文正常显示
- 蛮荒搜神记服务器在维护,蛮荒搜神记法宝洗练图文教程 蛮荒搜神记如何提升战斗力?-游侠网...
- 不要签名证书将网页打包封装成苹果APP,无需苹果企业签名,IPA证书签名,ios签名证书,免越狱安装...
热门文章
- jdk动态代理的实现流程(事务处理)
- centos7安装redies
- python蓝牙通信_python实现蓝牙通信
- 前端开发者的必备好书:CSS世界三部曲,你都知道吗?
- 【开源】有手就能做的街机游戏
- Interior-point methods(内点法)学习笔记
- 4.FX Blue 本地跟单软件EA参数说明
- catia重心主惯量矩 m1_CATIA_Knowledge_Advisor_help
- 独立开发一个完整的小程序,你想知道的流程
- 安装mysql-community-server报错缺少libaio依赖