一、说明

  • 本文是继《Ubuntu-安装-cuda7.0-单显卡-超详细教程》 之后的续篇。theano和caffe是深度学习库,对运算能力需求很大,最好使用cuda进行加速。所以,请先阅读《Ubuntu-安装-cuda7.0-单显卡-超详细教程》,成功安装cuda之后,再来安装theano和caffe。

二、安装Theano

1. 安装各种包

  • 安装gfortran, numpy, scipy, sklearn, blas, atlas等包

    # 安装gfortran,后面编译过程中会用到
    sudo apt-get install gfortran
    # 安装blas,Ubuntu下对应的是libopenblas,其它操作系统可能需要安装其它版本的blas——这是个OS相关的。
    sudo apt-get install libopenblas-dev
    # 安装lapack,Ubuntu下对应的是liblapack-dev,和OS相关。
    sudo apt-get install liblapack-dev
    # 安装atlas,Ubuntu下对应的是libatlas-base-dev,和OS相关。
    sudo apt-get install libatlas-base-dev
    # 安装pip
    sudo apt-get install python-pip
    sudo apt-get install python-dev
    sudo apt-get install python-nose
    sudo apt-get install g++
    sudo apt-get install git

2. 安装numpy和scipy

  • 安装这两个python库有点问题,如果使用apt-get安装,后面的test不能通过。如果使用pip安装,有得考虑各种依赖关系。

  • 所以,先使用apt-get安装,然后再卸载,最后再使用pip安装。这样,既能不考虑依赖关系,又能通过后面的test()测试。

    #安装numpy和scipy
    sudo apt-get install python-numpy
    sudo apt-get install python-scipy
    sudo apt-get install python-sklearn
    #卸载numpy和scipy
    sudo apt-get remove python-numpy
    sudo apt-get remove python-scipy
    # 安装numpy
    sudo pip install numpy
    # 测试numpy#,如果没有安装python-nose,测试会出错!python -c "
    import numpy
    numpy.test()
    # 安装s
    cipy
    sudo pip install scipy
    # 测试scipypython -c "
    import scipy
    scipy.test()"

3. 安装Theano

  • 前面的操作如果没有出现错误,就可以开始安装Theano了。命令如下所示。

    # 安装Theano
    sudo pip install Theano
    # 测试Theano
    import theano;
    theano.test()

4. 安装pyCUDA

  • 测试Theano时,提示PyCUDA import错误,因此需要安装pyCUDA。而PyCUDA需要以Boost为基础,所以应该先安装Boost。
  • 使用pip安装pyCUDA。

    #安装boost
    sudo apt-get install libboost-all-dev
  • 如果使用pip安装pyCUDA出错,使用下面安装方式。参考文章:《Ubuntu Theano CUDA》

    sudo ldconfig /usr/local/cuda-7.0/lib64

5. 解决cuda_ndarray.cu错误

  • 如果出现错误:ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.6.5 cannot open shared object file: No such file or directory,需要运行以下命令:

    sudo ldconfig /usr/local/cuda-7.0/lib64

6. 配置Theano

  • 在主目录下新建.theanorc文件

    cd ~vi .theanorc
  • 在.theanorc中输入下面的内容

    [cuda]root=/usr/local/cuda/bin/[global]floatX = float32device = gpu0[nvcc]fastmath = True

7. 测试Theano是否在使用GPU

  • 将下列python代码复制到useGPU.py,并运行。

    from theano import function, config, shared, sandboximport theano.tensor as Timport numpyimport timevlen = 10 * 30 * 768  # 10 x #cores x # threads per coreiters = 1000rng = numpy.random.RandomState(22)x = shared(numpy.asarray(rng.rand(vlen), config.floatX))f = function([], T.exp(x))print f.maker.fgraph.toposort()t0 = time.time()for i in xrange(iters):    r = f()t1 = time.time()print 'Looping %d times took' % iters, t1 - t0, 'seconds'print 'Result is', rif numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):    print 'Used the cpu'else:    print 'Used the gpu'
  • 假定上面已经设置文件.theanorc,运行命令如下所示:

    python useGPU.py
  • 如果出现下面的错误信息,请运行命令sudo ldconfig /usr/local/cuda-7.0/lib64参考

    #错误信息ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.7.0: cannot open shared object file: No such file or directory

Theano相关资料

  • 参考:Using the GPU & THEANO_FLAGS & THEANORC
  • CUDA Toolkit默认安装在/usr/local/cuda/,含有bin, lib, include等子文件夹。/usr/local/cuda/bin/文件夹称为cuda root文件夹。
  • 使用Theano时,必须告诉它CUDA root文件夹,有3种方法:

    • 定义$CUDA_ROOT环境变量。例如, CUDA_ROOT=/usr/local/cuda/bin/
    • 在THEANO_FLAGS中添加cuda.root标识。例如,THEANO_FLAGS='cuda.root=/usr/local/cuda/bin/'
    • 在.theanorc文件夹中添加[cuda]

      [cuda]root=/usr/local/cuda/bin/
  • 还需要更改设备选项(gpu or gpu0 or gpu1),设置默认的浮点计算类型(float32)

    • 方法一:THEANO_FLAGS=’cuda.root=/usr/local/cuda/bin/,device=gpu,floatX=float32’
    • 方法二:设置.theanorc文件的[global]选项:

      [cuda]root=/usr/local/cuda/bin/[global]device = gpufloatX = float32
  • 注意: 
    • 如果电脑有多个GPU,而配置是‘device=gpu’,驱动会选择其中一个使用(一般是 gpu0)。可以使用 nvida-smi 改变这一规则。
    • 可以通过指定 ‘device=gpuX’来选择一个特定的GPU。
    • 默认使用GPU计算。如果GPU有问题,Theano会退回使用CPU。可以通过设置标识‘force_device=True’,当GPU不能使用时,弹出错误信息。

安装OpenCV

下载OpenCV

  • 下载地址:https://github.com/jayrambhia/Install-OpenCV,这是根据大神编译过的版本进行安装的。
  • 切换到文件保存的文件夹,然后安装依赖项:
#切换路径cd ~/Downloads/Install-OpenCV-master/Ubuntu#安装OpenCV的依赖项sudo ./dependencies.sh
  • 修改opencv2_4_9.sh
  • 如果不添加CUDA_GENERATION,编译过程会失败 参考文章
#切换路径cd 2.4#修改opencv2_4_9.sh, 添加CUDA_GENERATION#根据显卡支持Fermi或Kepler做相应的修改。此处以Fermi为例。sudo gedit opencv2_4_9.sh

将以下内容

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 -D ..

修改为:

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 -D CUDA_GENERATION=Fermi ..

即在最后的..前面添加CUDA_GENERATION=Fermi

  • 安装最新版opencv2_4_9
#添加执行权限sudo chmod +x opencv2_4_9.sh#安装OpenCVsudo ./opencv2_4_9.sh

等待…..,直到安装完成。如下图所示。 

安装其它依赖项

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 protobuf-c-compiler python-pandas

安装glog

  1. Google Logging Library(glog),下载地址:https://code.google.com/p/google-glog/,然后解压安装: 
    tarzxvfglog−0.3.3.tar.gz ./ configure 
    make sudo make install

下载caffe

下载地址:https://github.com/BVLC/caffe 
本地解压 
切换路径cd ~/Downloads/caffe-master/python 
执行以下命令,安装python环境 
for req in (catrequirements.txt);dosudopipinstallreq; done

安装Matlab

选择Mathworks.Matlab.R2014a.Unix.iso - 右键 - 使用磁盘映像挂载器打开” 
进入装载的虚拟光盘,拷贝全部文件至home/Matlab 文件夹 
3. 授权安装文件夹 
$ chmod a+x Matlab -R 
4. 安装 
$ sudo ./install 
拷贝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64 
sudocplibmwservices.so/usr/local/MATLAB/R2014a/bin/glnxa64/安装完毕,程序默认启动路径:sh /usr/local/MATLAB/R2014a/bin/matlab

参考文章

Ubuntu14.04安装Theano详细教程

caffe官方安装教程

Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明

Caffe在Ubuntu 14.04 64bit 下的安装

Ubuntu Theano CUDA

Unsupported gpu architecture ‘compute_11’解决方法

Caffe + Ubuntu 15.04 + CUDA 7.0 新手安装配置指南(推荐)

Ubuntu-安装-theano+caffe-超详细教程的更多相关文章

  1. VMware虚拟机下安装CentOS系统超详细教程

    链接:https://jingyan.baidu.com/article/fdffd1f8736173f3e98ca1e3.html 1.步骤一.工具准备 1.物理计算机一台 配置要求: 操作系统:w ...

  2. VMware上安装Kali Linux 超详细教程

    一.下载镜像文件 下载好系统对应镜像文件  https://www.kali.org/downloads/ 二.创建新的虚拟机 1.创建新的虚拟机 我们使用自定义的配置方法. 2.添加镜像文件的路径 ...

  3. 安装64位Oracle 10g超详细教程

    安装64位Oracle 10g超详细教程 1. 安装准备阶段 1.1 安装Oracle环境 经过上一篇博文的过程,已经完成了对Linux系统的安装,本例使用X-Manager来实现与Linux系统的连 ...

  4. Github上传代码菜鸟超详细教程【转】

    最近需要将课设代码上传到Github上,之前只是用来fork别人的代码. 这篇文章写得是windows下的使用方法. 第一步:创建Github新账户 第二步:新建仓库 第三部:填写名称,简介(可选), ...

  5. Windows + Ubuntu 16.04 双系统安装详细教程

    Windows + Ubuntu 16.04 双系统安装详细教程 2018年01月28日 16:43:19 flyyufenfei 阅读数:165619   发现了一篇好教程,果断转载了,以后用得着时 ...

  6. 【python】10分钟教你用python打造贪吃蛇超详细教程

    10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 0 ...

  7. 数学规划求解器lp_solve超详细教程

    前言 最近小编学了运筹学中的单纯形法.于是,很快便按奈不住跳动的心.这不得不让我拿起纸和笔思考着,一个至关重要的问题:如何用单纯形法装一个完备的13? 恰巧,在我坐在图书馆陷入沉思的时候,一位漂亮的小 ...

  8. ubuntu安装Theano+cuda

    由于学习需要用到GPU加速机器学习算法,需要安装theano+cuda. 开源库的一大问题就是:难安装. 为了搞好这个配置,我是前前后后花了3天,重装了3次ubuntu重装了5次驱动才搞定. 故发此贴 ...

  9. 命令创建.net core3.0 web应用详解(超详细教程)

    原文:命令创建.net core3.0 web应用详解(超详细教程) 你是不是曾经膜拜那些敲几行代码就可以创建项目的大神,学习了命令创建项目你也可以成为大神,其实命令创建项目很简单. 1.cmd命令行 ...

  10. WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码

    转自:http://blog.csdn.net/nonmarking/article/details/47958395 本系列目前共三篇文章,后续还会更新 WebRTC VideoEngine超详细教 ...

随机推荐

  1. Usart的单线半双工模式(stm32F10x系列)

    这两天折腾CTS/RTS硬件流控,看到说232协议的CTS/RTS只是用来做半双工换向使用的.正好手头上有块stm32的板子,看了看stm32的Usart,竟然发现支持的是单线半双工.232里面毕竟4 ...

  2. Make Notepad++ auto close HTML/XML tags after the slash(the Dreamweaver way)

    I've been looking for a Notepad++ plugin that can close HTML/XML tags after a slash just like the wa ...

  3. Extjs的学习及MIS系统实践应用(系列文章)

    本系列文章从Extjs的实际运用出发,结合系统开发的实践经验,详细解释Extjs的基本控件及控件扩展的用法,和在平时的学习运用中一步一步查阅的资料.积累经验的集锦.标题及链接奉上,用一个小程序,开启了 ...

  4. beetle.express针对websocket的高性能处理

    客户需要对websocket服务应用,其要求每秒同时给3W个在线的websocket连接进行广播消息.以下针对beetle.express扩展websocket简单的性能测试.从测试结果来看基本没什么 ...

  5. 配置WCF同时支持WSDL和REST,swaggerwcf生成文档

    配置WCF同时支持WSDL和REST,SwaggerWCF生成文档 VS创建一个WCF工程,通过NuGet添加SwaggerWcf 创建完成后通过 程序包管理控制台 pm>Install-Pac ...

  6. Android 开发必备知识:我和 Gradle 有个约会

    腾讯Bugly特约作者:霍丙乾 0.讲个故事 0.1 Ant,我还真以为你是只蚂蚁 真正开始近距离接触编程其实是在2012年,年底的时候带我的大哥说,咱们这个 app 发布的时候手动构建耗时太久,研究 ...

  7. MySQL2:四种MySQL存储引擎

    前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以 ...

  8. 【C语言学习】《C Primer Plus》第9章 函数

    学习总结 1.函数有利于我们可以省去重复的代码,函数可以使程序更加模块化,从而有利于程序的阅读.修改和完善.我们在系统设计或架构设计的时候,往往追求的是模块化.组件化.松耦合,而函数就是其代码的表现. ...

  9. Unity3D热更新全书-何谓热更新,为何热更新,如何热更新

    首先来赞叹一下中文,何谓为何如何,写完才发现这三个词是如此的有规律. 为何赞叹中文?因为这是一篇针对新手程序员的文字,是一节语文课. 然后来做一下说文解字,也就是 何谓热更新 热更新,每个程序员一听就 ...

  10. [PCB设计] 1、硬件原理图设计规范(一)——基本原则

    1.1 目的 原理图设计是产品设计的理论基础,设计一份规范的原理图对设计PCB.跟机.做客户资料具有指导性意义,是做好一款产品的基础.原理图设计基本要求: 规范.清晰.准确.易读. 因此制定此< ...