Ubuntu16.04+CUDA8.0+cudnn7.5+Caffe安装过程

Ubuntu16.04+CUDA8.0+cudnn7.5+Caffe安装过程

一般这样标题的博客第一段都会有一段吐苦水的话,哈哈...我在此就按住不表了,总结起来就是:在污邦兔下面安装深度学习的平台光有经验有时候是不够的,还要有好人品Orz... 

友情提示:如果出现不存在该文件或找不到文件的情况,很可能是因为终端定位的目录错误了,这是新手经常会遇到的问题。

1. 主要用到的软件列表:

   注:具体版本由自己电脑决定,官网下载超链接。
    Ubuntu-16.04.1-desktop-amd64 (64位ubuntu)
    cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb (CUDA8.0)
    cudnn-7.5-linux-x64-v5.1.tgz(需要注册才能下载,现在审核时间很短,填个问卷就能下载了)
    caffe-master (也可以在线下载 )

2. CPU版Caffe

直入正题,因为先前只需要安装CPU版的caffe,所以实现起来不是很难,参照这篇博客,基本能够实现,至于他最后训练手写字体mnist数据库失败的原因是因为没有修改example/mnist文件夹中的运行配置文件,即将默认的GPU运行模式改成CPU。


3. GPU版本安装及配置

3.1 安装一些基本依赖库

sudo apt-get install build-essential 
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

3.2 更新gcc和g++

因为我用的都是比较新的软件版本,为避免与编译器版本不兼容问题(我安装过程中确实因为出现这个问题走了一些弯路),我将ubuntu自带的gcc/g++-4.9升级到了gcc/g++-5,具体步骤如下:

下载安装gcc/g++-5
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-5
sudo apt-get install g++-5

改变系统默认的gcc/g++编译器版本,换成gcc/g++-5
sudo su
cd ../../usr/bin
ln -s /usr/bin/g++-5 /usr/bin/g++ -f
ln -s /usr/bin/gcc-5 /usr/bin/gcc -f
这样,gcc就默认成gcc-5,g++也默认成g++-5了。

3.3 安装CUDA8.0

我采用的是离线.deb安装方法,按自己的电脑和软件的情况,去官网下载dbe包,大概1.8G。然后在它存放的目录打开终端,执行下面的命令安装:
sudo dpkg -i cuda-repo-__.deb   # 自己的.deb包名
sudo apt-get update  
sudo apt-get install cuda 
安装完成之后切记要重启电脑:sudo reboot,让显卡配置生效。

3.4 安装cudnn7.5

将上面提到的cudnn安装包下载好解压,进入解压后的文件,在终端执行下面的指令安装:
cd cuda  
sudo cp lib64/lib* /usr/local/cuda/lib64/  
sudo cp include/cudnn.h /usr/local/cuda/include/

然后更新网络连接:
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.5.1.3  # 自己查看.so的版本
sudo ln -sf libcudnn.so.5.1.3 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
sudo ldconfig

3.5 添加环境变量

编辑计算机文件夹下的/etc/profile,加入CUDA环境变量(下面的2,3句),保存。
sudo gedit /etc/profile
PATH=/usr/local/cuda/bin:$PATH  
export PATH
保存后执行下面的命令,使其生效:
source /etc/profile
同时,进入/etc/ld.so.conf.d/文件夹,执行下面的命令,新建一个名为cuda.conf的文件。
sudo gedit cuda.conf
然后在文件中写入如下内容:
/usr/local/cuda/lib64
保存后执行下面的命令,使其生效。
sudo ldconfig

3.6 Build CUDA Sample

进入usr/local/cuda/samples,然后build samples,命令如下:
sudo make all -j8
在执行完之后,进入samples/bin/x86_64/linux/release目录下,在终端执行查询命令:
./deviceQuery
如果返回了你电脑显卡的信息,且结尾有Result=PASS,则表示安装成功,否则,建议重启电脑之后再次尝试查询命令。

4 安装Atlas

安装命令如下:
sudo apt-get install libatlas-base-dev


5 安装Opencv

做机器视觉会比较多地用到Opencv这个强大的工具,下载Opencv安装包,解压后进入目录Install-OpenCv/Ubuntu/2.4,然后执行安装文件:
sh sudo ./opencv2_4_10.sh
这个可能要花点时间,耐心等待吧。

6  配置Python环境

下载caffe-master包,第1节有gitbub下载链接,下载之后,解压,打开Makefile文件,修改下面的两个地方:
INCLUDE_DIRS += $(BUILD_INCLUDE_DIR) ./src ./include
改成:
INCLUDE_DIRS += $(BUILD_INCLUDE_DIR) ./src ./include /usr/include/hdf5/serial

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改成:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

保存之后,在终端执行下面的命令:

sudo apt-get install python-pip python-dev build-essential
sudo pip install --upgrade pip
sudo pip install -r python/requirements.txt


7 安装ipython notebook 

notebook是很方便的python编译和运行工具,值得拥有 ,随便在哪个终端执行下面命令。
sudo apt-get install ipython-notebook python-sympy
sudo pip install jupyter
mkdir notebook
cd notebook
ipython notebook
如果有一个notebook网页跳出就说明ok了,至于不会用notebook的同学,建议学一下。不过这里只是一个辅助的工具啦,并不是本文主讲内容,因为还用不到。

8 编译Caffe

进入caffe-master文件夹,复制配置文件,留一个备份:
cp Makefile.config.example Makefile.config

然后打开Makefile.config文件,将里面的一些配置修改一下,把注释去掉,后面数字修改一下:
USE_CUDNN := 1
USE_OPENCV := 1
USE_LMDB := 1
WITH_PYTHON_LAYER := 1
CUSTOM_CXX := g++

这是为了运行下面mnist例子做准备的,不同的例子,配置文件修改的内容可能不一样,这也是留一个备份的原因。

然后编译下面4个命令:
make all -j8
make pycaffe -j8
make test -j8
make runtest -j8

如果没有报错,那基本上就安装成功啦!

9 mnist手写字体识别例子实现

进入caffe-master文件夹,打开终端,下载数据:
./data/mnist/get_mnist.sh
将数据转化成要求格式:
./examples/mnist/create_mnist.sh
训练:
./examples/mnist/train_lenet.sh

如果成功了,那就O了。

我自己在安装的过程中借鉴了很多别人的经验,觉得这就是博客的魅力所在,感谢他们的无私分享,也希望自己的分享能够给其他人带来帮助,有任何疑问都可以交流哈。

10 References

    1. http://blog.csdn.net/letian0805/article/details/52845285
    2. http://blog.csdn.net/ubunfans/article/details/47724341

你可能感兴趣的:(机器学习)