https://blog.csdn.net/jywowaa/article/details/52263711

学习中用到深度学习的框架,需要搭建caffe、theano和torch框架。经过一个月的不懈奋战,终于搭建好了框架。现在分享简单的搭建过程,为后面要用到深度学习框架的同学节省时间,写了这个博客。因为框架的搭建过程会出现各种问题,不同的硬件(如笔记本、台式机)、不同的软件(如依赖库、编译器)和软件的版本(如编译器版本不同,编译框架时会找不到依赖库路径)之间有上百种组合,网络中遇到问题的情况可能与你的问题情况相同,但是解决办法就是解决不了你的问题。所以,要有耐心多百度、谷歌尝试解决方法,一定能够解决的(耗时长,很坑,但是收获颇多 233),教程仅供参考。博主正在游向岸边的路上,若有错误还请海涵,共同学习!
 
网上很多博客已经写了如何搭建的教程,因为搭建的过程中参考了很多博客和官方教程,所以在这里写下自己在笔记本上搭建的教程吧,适合随时在自己本上调程序的小伙伴们。先说一下我的本本型号:华硕的U303L,显卡NVIDIA GT840M(貌似不支持cudnn加速),其他详细配置请自行网上搜索。
 
第一部分 系统安装
版本Ubuntu16.04。这里省略安装过程,请自行网上搜索安装过程。
 
第二部分 显卡驱动和cuda8.0rc的安装
1、显卡驱动安装
我这里是运用ppa更新的最新驱动,使用起来能够得到挺好的体验,并能够实现双显卡的自由切换。
首先,通过快捷键Ctrl+Alt+T打开终端,然后加入官方ppa源:
$ sudo add-apt-repository ppa:graphics-drivers/ppa
需要输入用户密码,并确认链接源。之后刷新软件库并安装最新的驱动,在命令行输入:
$ sudo apt-get update
然后打开Ubuntu系统设置-》软件和更新-》附加驱动,选择最新版的显卡装有驱动,系统会自动安装好显卡驱动,然后重启系统便会切换到独显。网上好多是下载官方的显卡驱动很容易出现安装完无法登陆系统、登陆界面死循环、或者重启后黑屏。所以建议本方法。
安装成功后可以通过下面命令查看:(由于篇幅,截图省略)
$ nvidia-settings
2、cuda8.0rc安装与配置
cuda8.0rc下载请自行到官网下载,建议下载runfile(local)类型,下载完要进行md5校验,保证安装包不出问题。
后面用到的工具:(vim安装:终端输入$ sudo apt-get install vim 即可)
然后,退出GUI,也就是X-Win界面,操作方法是:同时按:CTRL+ALT+F1(F2-F6),切换到TTY1-6命令行模式。登陆root用户,关闭桌面服务:
# service lightdm stop
再输入以下指令:
# vim /etc/modprobe.d/blacklist.conf
在文件最后面,添加这句:
blacklist nouveau
重启,然后进入TTY1,登陆root用户:
  1.  
    # chmod +x cuda*.run #获取文件权限
  2.  
    # ./cuda*.run #执行文件安装
在选择条件的过程中,一定不要再次安装nvidia驱动,否则之前安装的显卡驱动就坏了。
特别注意:这里所有的编译都用Ubuntu自带编译器GCC和G++版本编译,不要进行降级,就不会导致后面编译caffe出现找不到依赖库的错误。等待cuda安装完成。
配置环境变量:
# vim /etc/profile
在文件末尾添加这句:
  1.  
    PATH=/usr/local/cuda/bin:$PATH
  2.  
    export PATH
保存退出,按esc,再输入“:wq”即可。
输入命令:
# source /etc/profile
使其生效
输入命令:
# vim /etc/ld.so.conf.d/cuda.conf
添加内容:
 /usr/local/cuda/lib64
输入命令:
# ldconfig
使其生效
cuda验证测试
测试cuda是否安装成功:
# cd /usr/local/cuda/samples
编译例子:
# make all -j2   (我的本本是双核CPU,所以-j2都用上加快编译速度)
运行编译可执行结果文件,cd到/usr/local/cuda/samples/x86_64/linux/release,输入:
# ./deviceQuery
最后测试通过
 
第三部分 OpenCV3.1.0安装与配置
首先安装必要的库,有的依赖库我是已经安装过的,具体安装的先后关系已经忘了。如果出现有些依赖关系不满足的错误,可以再安装库:
  1.  
    $ sudo apt-get -y remove ffmpeg x264 libx264-dev
  2.  
    $ sudo apt-get -y install libopencv-dev build-essential checkinstall cmake pkg-config yasm libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev x264 v4l-utils ffmpeg libgtk2.0-dev
根据官网上的链接下载OpenCV3.1.0版本,并进行解压,解压之后进入安装文件目录:
 
  1.  
    $ mkdir OpenCV
  2.  
    $ cd OpenCV
 
建立要编译的build目录,然后进入build目录进行编译:
  1.  
    $ mkdir build
  2.  
    $ cd build
  3.  
    $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
在configure过程中过程中,可能会出现下面的错误:ICV: Downloading ippicv_linux_20151201.tgz…
在直接下载该文件的过程中,会因为超时而失败,可以下载ippicv_linux_20151201.tgz, 并替换掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件,然后再次cmake即可。生成编译文件之后,在opencv-3.1.0/build目录下,终端输入:
  1.  
    $ make -j2
  2.  
    $ sudo make install
安装好以后配置环境变量,使其生效:
  1.  
    $ sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
  2.  
    $ sudo ldconfig
特别注意:这里所有的编译都用Ubuntu自带编译器GCC和G++版本编译,不要进行降级,就不会导致后面编译caffe出现找不到依赖库的错误。等待安装完成
编译opencv3.1.0时可能会出现trying to build v3.1 opencv with cuda support. standard cmake. project of: opencv_cudalegacy not compile -- nppiGraphcut missing的报错,解决方法如下:
try this: in graphcuts.cpp (where your error is thrown) change this:
  1.  
    #include "precomp.hpp"
  2.  
    #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
to this:
  1.  
    #include "precomp.hpp"
  2.  
    #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
because graphcuts is not supported directly with CUDA8 anymore.
 
第四部分 Python安装和调试
python的安装有两种方式:一种是系统自带的python,只需再安装相应的库即可;第二种是直接安装anaconda,很多相应的库已经包含了。第一种直接安装库文件比较简单,不需要修改相应的包含路径和库文件。
第一种如下,第二种(略):
首先通过下面的命令安装pip,pip是Python的一个安装和管理扩展库的工具。
$ sudo apt-get install python-pip
安装完毕之后,请输入ipython命令测试是否能正常启动。为了让IPython notebook工作,还还需要安装tornado和pyzmq:
  1.  
    $ sudo pip install tornado pyzmq pygments
  2.  
    $ sudo apt-get install libzmq-dev
使用iPyhthon NoteBook(基于浏览器的Python IDE),特别是适合需要用Python做教程的老师们,可以直接导出.py, .ipynb, html格式,安装步骤如下:
$ sudo ipython notebook
启动(自动打开浏览器):$ ipython nootbook
通过apt-get命令可以快速安装这几个库:
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-qt4 qt4-designer pyqt4-dev-tools python-qt4-doc spyder cython swig python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags ipython protobuf-c-compiler protobuf-compiler
 
第五部分 caffe的安装与配置
首先,安装caffe必要的库文件:
  1.  
    $ sudo apt-get update
  2.  
    $ sudo apt-get install build-essential cmake git pkg-config libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev python-dev
  3.  
    $ sudo apt-get install --no-install-recommends libboost-all-dev
执行完以上的语句之后,基本的依赖库就安装完成了
安装BLAS,使用如下的语句自动安装BLAS(当然,你可以选择其他的库) ,执行:
$ sudo apt-get install libatlas-base-dev
修改配置文件,进入到caffe的根目录,执行:
$ cp Makefile.config.example Makefile.config
打开makefile.config对其进行修改,makefile.config修改内容内容如下(未配置cudnn加速):
  1.  
    <pre name="code" class="html">注释第5行的 USE_CUDNN := 1
  2.  
    去掉注释第21行的 OPENCV_VERSION := 3

添加路径
  1.  
    在 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include 后面添加 /usr/include /usr/include/hdf5/serial
  2.  
    在 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 后面添加 /usr/lib/x86_64-linux-gnu/hdf5/serial
  3.  
    实现caffe对Python和Matlab接口的支持 PYTHON_LIB := /usr/local/lib
到这里,整个配置文件修改完毕,可以开始编译了,
  1.  
    $ make all -j2
  2.  
    $ make test -j2
  3.  
    $ make runtest -j2
编译Python用到的caffe文件
$ make pycaffe -j2
cuda8.0编译器问题,打开/usr/local/cuda/include/host_config.h 注释掉:

error -- unsupported GNU version! gcc versions later than 5.3 are not supported!
结果如下:
  1.  
    #if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 3)
  2.  
    //#error -- unsupported GNU version! gcc versions later than 5.3 are not supported!
  3.  
    #endif /* __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 1) */
caffe框架到此已安装完毕,尽情看源码吧!
 
第六部分 theano安装与配置
直接输入命令:

$ sudo pip install theano
配置参数文件:.theanorc
在终端输入命令:
$ sudo vim ~/.theanorc 
输入“i”进入insert模式。输入一下内容:
  1.  
    [global]
  2.  
    openmp=False
  3.  
    device=gpu
  4.  
    floatX=float32
  5.  
    allow_input-downcast=True
  6.  
    [blas]
  7.  
    ldflags=
  8.  
    [nvcc]
  9.  
    flags=-D_FORCE_INLINES
输入完毕,按‘Esc’退出,输入‘:wq’,回车。配置完成!
运行测试例子,新建一空白文档将以下代码复制进去,改后缀test.py:
  1.  
    from theano import function, config, shared, sandbox
  2.  
    import theano.tensor as T
  3.  
    import numpy
  4.  
    import time
  5.  
    vlen = 10 * 30 * 768 # 10 x #cores x # threads per core
  6.  
    iters = 1000
  7.  
    rng = numpy.random.RandomState(22)
  8.  
    x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
  9.  
    f = function([], T.exp(x))
  10.  
    print(f.maker.fgraph.toposort())
  11.  
    t0 = time.time()
  12.  
    for i in range(iters):
  13.  
    r = f()
  14.  
    t1 = time.time()
  15.  
    print("Looping %d times took %f seconds" % (iters, t1 - t0))
  16.  
    print("Result is %s" % (r,))
  17.  
    if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
  18.  
    print('Used the cpu')
  19.  
    else:
  20.  
    print('Used the gpu')
在终端运行
$ python test.py
可以看到结果如下,完成安装。
  1.  
    /usr/bin/python2.7 /home/hjimce/PycharmProjects/untitled/.idea/temp.py
  2.  
    Using gpu device 0: GeForce 840M (CNMeM is disabled, cuDNN not available)
  3.  
    [GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
  4.  
    Looping 1000 times took 0.302778 seconds
  5.  
    Result is [ 1.23178029 1.61879349 1.52278066 ..., 2.20771813 2.29967761
  6.  
    1.62323296]
  7.  
    Used the gpu
至此Theano环境 搭建完成
 
第七部分 char-cnn+torch 安装过程
安装Torch7 的依赖项
  1.  
    $ sudo apt-get install curl
  2.  
    $ curl -sk https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
安装 torch distribution
  1.  
    $ git clone https://github.com/torch/distro.git ~/torch --recursive
  2.  
    $ cd ~/torch; ./install.sh
执行下列命令,使得安装过程中被更改的PATH生效:
$ source ~/.bashrc
执行下列命令查看torch 是否安装成功:
  1.  
    $ th
  2.  
    $ totch.Tensor{1,2,3}
如果不使用torch,可以使用下列命令卸载:$ rm -rf ~/torch
可以使用luarocks命令安装其他的torch包:
  1.  
    $ luarocks install image
  2.  
    $ luarocks list
至此Torch 环境 搭建完成
运行char-cnn,安装必要的包:
  1.  
    $ luarocks install nngraph
  2.  
    $ luarocks install optim
参考资料(感谢网络博主的分享学习,共同进步):
1、在Ubuntu中安装Python科学计算环境http://hyry.dip.jp/tech/slice/slice.html/24/
2、Ubuntu 15.10配置Caffe+Cuda7.5+Cudnn的详细过程http://blog.sina.com.cn/s/blog_a5fdbf010102w7f6.html
3、深度学习(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow环境搭建http://blog.csdn.net/hjimce/article/details/51999566
4、Ubuntu16.04+matlab2014a+anaconda2+OpenCV3.1+caffe安装http://itfish.net/article/62996.html#
5、Caffe & Theano安装教程——ubuntu16.04系统http://blog.csdn.net/yahag/article/details/51968004
6、char-cnn+torch+ubuntu16.04(RNN) 安装过程http://blog.csdn.net/jeff_liu_sky_/article/details/51649084

Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程的更多相关文章

  1. Ubuntu16.04下安装OpenCV3.2.0

    1.安装官方给的opencv依赖包 $ sudo apt-get install build-essential $ sudo apt-get install cmake git libgtk2.0- ...

  2. ubuntu16.04下安装opencv3.1.0

    1.安装依赖项 sudo apt--dev pkg-config libavcodec-dev libavformat-dev libswscale-dev 可选的 sudo apt--dev lib ...

  3. ubuntu16.04下安装opencv-3.1.0及其扩展模块opencv_contrib

    步骤1.安装依赖项 sudo apt--dev pkg-config libavcodec-dev libavformat-dev libswscale-dev 可选的 sudo apt--dev l ...

  4. 【深度学习】ubuntu16.04下安装opencv3.4.0

    1.首先安装一些编译工具 # 安装编译工具 sudo apt-get install build-essential # 安装依赖包 sudo apt-get install cmake git li ...

  5. Ubuntu16.04+Cuda8.0+1080ti+caffe+免OpenCV3.2.0+faster-rCNN教程

    一.事先声明:1.Ubuntu版本:Ubuntu使用的是16.04.而不是16.04.1或16.04.2,这三个是有区别的.笔者曾有过这样的经历,Git上一个SLAM地图构建程序在Ubuntu14.0 ...

  6. Ubuntu16.04 + cuda8.0 + GTX1080安装教程

    1. 安装Ubuntu16.04 不考虑双系统,直接安装 Ubuntu16.04,从 ubuntu官方 下载64位版本: ubuntu-16.04-desktop-amd64.iso . 在MAC下制 ...

  7. Ubuntu16.04+CUDA8.0+cuDNN5.1+Python2.7+TensorFlow1.2.0环境搭建

    软件版本说明:我选的Linux系统是Ubuntu16.04,CUDA用的8.0,Ubuntu16.04+CUDA8.0+cuDNN5.1+Python2.7只支持TensorFlow1.3.0以下的版 ...

  8. Ubuntu16.04+CUDA8.0+CUNN5.1+caffe+tensorflow+Theano

    title: Ubuntu 16.04+CUDA8.0+CUNN5.1+caffe+tensorflow+Theano categories: 深度学习 tags: [深度学习框架搭建] --- 前言 ...

  9. Ubuntu16.04 +cuda8.0+cudnn+caffe+theano+tensorflow配置明细

      本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www ...

随机推荐

  1. Oracle SQL常用语句

    1,查询插入 insert into user_role(account_id, role_id, create_user) select t.employee_id, 'BC8FBF8B1D9843 ...

  2. 【LeetCode每天一题】Search in Rotated Sorted Array(在旋转数组中搜索)

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., ...

  3. [LeetCode] 364. Nested List Weight Sum II_Medium tag:DFS

    Given a nested list of integers, return the sum of all integers in the list weighted by their depth. ...

  4. [Java in NetBeans] Lesson 15. Sorting and Searching.

    这个课程的参考视频和图片来自youtube. 主要学到的知识点有: Build in functions in java.util.Collections Need to implement a co ...

  5. JAVA编程思想学习笔记5-chap13-15-斗之气5段

    1.String对象不可变,一旦发生字符变换或者变长度,一定是新建了一个String private final char value[]; 2.字符串+与+=:唯二操作符重载 "aaa&q ...

  6. cocos2d JS touch屏幕点击事件监听 cc.EventListener.TOUCH

    var self = this; this.touchListener = cc.EventListener.create({ event: cc.EventListener.TOUCH_ONE_BY ...

  7. 网络编程之Socket的TCP协议实现客户端与客户端之间的通信

    我认为当你学完某个知识点后,最好是做一个实实在在的小案例.这样才能更好对知识的运用与掌握 如果你看了我前两篇关于socket通信原理的入门文章.我相信对于做出我这个小案列是完全没有问题的!! 既然是小 ...

  8. JS实例4

    根据当前年的前五年后五年的年月日 <select id="nian" onclick="Bian()"></select>年 <s ...

  9. net npoi将List<实体>导出excel的最简单方法

    只是临时导数据用的.方便.最基本的方法, [HttpGet] [Route("ExportEnterprise")] public BaseResponse ExportEnter ...

  10. 2017高教杯数学建模B 题分析

    B题原文 "拍照赚钱"是移动互联网下的一种自助式服务模式.用户下载APP,注册成为APP的会员,然后从APP上领取需要拍照的任务(比如上超市去检查某种商品的上架情况),赚取APP对 ...