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 安装一些基本依赖库

[plain] view plain copy
  1. sudoapt-getinstallbuild-essential
  2. sudoapt-getinstalllibprotobuf-devlibleveldb-devlibsnappy-devlibopencv-devlibboost-all-devlibhdf5-serial-devlibgflags-devlibgoogle-glog-devliblmdb-devprotobuf-compiler

3.2 更新gcc和g++

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

下载安装gcc/g++-5
[plain] view plain copy
  1. sudoadd-apt-repositoryppa:ubuntu-toolchain-r/test
  2. sudoapt-getupdate
  3. sudoapt-getinstallgcc-5
  4. sudoapt-getinstallg++-5

改变系统默认的gcc/g++编译器版本,换成gcc/g++-5
[plain] view plain copy
  1. sudosu
  2. cd../../usr/bin
  3. ln-s/usr/bin/g++-5/usr/bin/g++-f
  4. ln-s/usr/bin/gcc-5/usr/bin/gcc-f
这样,gcc就默认成gcc-5,g++也默认成g++-5了。

3.3 安装CUDA8.0

我采用的是离线.deb安装方法,按自己的电脑和软件的情况,去官网下载dbe包,大概1.8G。然后在它存放的目录打开终端,执行下面的命令安装:
[html] view plain copy
  1. sudodpkg-icuda-repo-<distro>_<version>_<architecture>.deb#自己的.deb包名
  2. sudoapt-getupdate
  3. sudoapt-getinstallcuda
安装完成之后切记要重启电脑:sudo reboot,让显卡配置生效。

3.4 安装cudnn7.5

将上面提到的cudnn安装包下载好解压,进入解压后的文件,在终端执行下面的指令安装:
[plain] view plain copy
  1. cdcuda
  2. sudocplib64/lib*/usr/local/cuda/lib64/
  3. sudocpinclude/cudnn.h/usr/local/cuda/include/

然后更新网络连接:
[plain] view plain copy
  1. cd/usr/local/cuda/lib64/
  2. sudochmod+rlibcudnn.so.5.1.3#自己查看.so的版本
  3. sudoln-sflibcudnn.so.5.1.3libcudnn.so.5
  4. sudoln-sflibcudnn.so.5libcudnn.so
  5. sudoldconfig

3.5 添加环境变量

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

3.6 Build CUDA Sample

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

4 安装Atlas

安装命令如下:
[plain] view plain copy
  1. sudoapt-getinstalllibatlas-base-dev


5 安装Opencv

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

6 配置Python环境

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

[plain] view plain copy
  1. LIBRARIES+=gloggflagsprotobufboost_systemboost_filesystemmhdf5_hlhdf5
改成:
[plain] view plain copy
  1. LIBRARIES+=gloggflagsprotobufboost_systemboost_filesystemmhdf5_serial_hlhdf5_serial

保存之后,进入caffe-master/python文件,在终端执行下面的命令:
[plain] view plain copy
  1. sudoapt-getinstallpython-pippython-devbuild-essential
  2. sudopipinstall--upgradepip
  3. sudopipinstall-rpython/requirements.txt


7 安装ipython notebook

notebook是很方便的python编译和运行工具,值得拥有 ,随便在哪个终端执行下面命令。
[plain] view plain copy
  1. sudoapt-getinstallipython-notebookpython-sympy
  2. sudopipinstalljupyter
  3. mkdirnotebook
  4. cdnotebook
  5. ipythonnotebook
如果有一个notebook网页跳出就说明ok了,至于不会用notebook的同学,建议学一下。不过这里只是一个辅助的工具啦,并不是本文主讲内容,因为还用不到。

8 编译Caffe

进入caffe-master文件夹,复制配置文件,留一个备份:
[plain] view plain copy
  1. cpMakefile.config.exampleMakefile.config

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

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

然后编译下面4个命令:
[plain] view plain copy
  1. makeall-j8
  2. makepycaffe-j8
  3. maketest-j8
  4. makeruntest-j8

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

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

进入caffe-master文件夹,打开终端,下载数据:
[plain] view plain copy
  1. ./data/mnist/get_mnist.sh
将数据转化成要求格式:
[plain] view plain copy
  1. ./examples/mnist/create_mnist.sh
训练:
[plain] view plain copy
  1. ./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

Ubuntu16.04+CUDA8.0+cudnn7.5+Caffe安装过程的更多相关文章

  1. 将POD规范属性与其Xcode配置中的不同构建设置相关联(例如,发布,调试)

    我正在尝试为现有的库项目创建POD规范.在Xcode项目中,构建设置为不同的构建配置定义了不同的预处理器宏例如:对于“调试”配置:对于“发布”配置:如何将这些设置映射到相应的POD规范?

  2. 在ios上使用来自框架的boost :: filesysystem路径

    我一直在使用Boost作为PeteGoodliffe脚本构建的框架已有一段时间了.效果很好.最近我遇到了一个问题,可以通过将以下代码放入另一个全新的XCode项目中的视图控制器的viewDidLoad中来重现:当路径对象被销毁时会导致EXC_BAD_ACCESS.有没有其他人遇到这个问题?

  3. ios – LLVM,GCC 4.2和Apple LLVM编译器之间的区别3.1

    LLVMGCC4.2和AppleLLVM编译器3.1之间的主要区别是什么?

  4. ios – 在/usr/lib/system/libcache.dylib中,缺少必需的架构armv6

    在试图为iphoneos编写一个虚拟程序时,Xcode4,gcc似乎没有超出初始的sysroot目录如果我把sysroot,以下作品,但感觉非常干酪,而且不可伸缩.这里发生了什么?

  5. 如何在Xcode 4.5中关闭垃圾回收,并在切换ARC时摆脱cl ang错误1?

    我刚刚重新打开了一个被设置为使用垃圾收集的项目,并且我最后在Xcode3中打开.现在在Xcode4.5中再次打开它,并希望将其现代化,我正在尝试切换ARC.但是,当构建时,会导致clangerrorerrorerrorerrorininin::::::::::::clang:error:不能同时指定’-fobjc-arc’和’-fobjc-gc-only’啊,我需要关闭我之前使用的垃圾收集.但是,

  6. Swift设计模式之命令模式

    转自Swift设计模式原文Design-Patterns-In-Swift

  7. Ceph部署二RGW搭建

    背景CephRGW简介CephRGW基于librados,是为应用提供RESTful类型的对象存储接口。环境规划如上篇文章《Ceph部署(一)集群搭建》所述:4台服务器:1台作为Monitor,1台作为OSDRGW,还有两台作为OSD。部署CephRGW进入上文所述的my-cluster目录。该脚本会连接RGW,创建一个bucket并列出所有的bucket。正常的输出应该为:小结通过ceph-deploy命令,已经大大地简化了对Ceph集群和RGW的安装和配置。但如果想挑战下自己,或者想让自己了解更多,试

  8. EFColorPicker - 一个纯 Swift 的轻量级 iOS 颜色选择器

    EFColorPicker是一个纯Swift的轻量级iOS颜色选择器,受MSColorPicker启发。或执行以下命令:环境iOS8.0+Xcode9.0+Swift4.0+安装EFColorPicker可以通过CocoaPods进行获取。只需要在你的Podfile中添加如下代码就能实现引入:备注EFColorPicker的第一个版本从MSColorPicker转换而来,在此对MSColorPicker的作者sgl0v表示感谢!作者EyreFree,eyrefree@eyrefree.org协议EFQRC

  9. 使用LLDB调试Swift

    LLDB是个很好的选择。接下来我会探讨一些工作中常用到的一些LLDB调试技巧。LLDB拥有大量有用的调试工具。LLDB的bugreport命令可以生成一份详细的app当前状态的报告。这些命令有针对C++,Objective-C,Swift和RenderScript的。使用LLDB的这些命令可以让调试变得更自动化。process用于控制要调试的进程,可把LLDB依附到特定target或从target上解绑。processstatus用于打印当前进程及断点处的相关信息:使用如下命令可继续执行:这等同于Xcod

  10. android – 来自adb的’grep’命令的问题

    当我用adb写的时候:我得到错误输出:但如果我将它拆分为两个操作符:它工作正常.如果唯一的方法是将它拆分为两个–首先进入adbshell,然后运行Inquire,有一种方法可以从c#中执行此操作吗?

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部