zoukankan      html  css  js  c++  java
  • 第一节,windows和ubuntu下深度学习theano环境搭建

    先讲解windows下深度学习环境的搭建

    步骤一  安装Anaconda

    Anaconda是一个用于科学计算的python发行版,支持linux,mac,windows系统,提供了包管理和环境管理的功能,Anaconda是一个打包的集合,里面装好了conda,某个版本的python,众多的packages等,科学计算工具等

    下载中科大镜像:http://mirrors.ustc.edu.cn/

     从archive路径下载Anaconda3-4.2.0-Windows-x86_64.exe

    我的安装路径为 D:Program Files (x86)Anaconda,注意这里我选择的是3-4.2.0版本。

     

    步骤二  安装minGw,libpython

    进入Anaconda Prompt命令窗口,输入命令

    conda install mingw libpython

    中间会要你选择Proceed([y]/n)? 输入y

    此处安装如果比较慢或者有问题可以参考:手把手教你搭建深度学习平台——避坑安装theano+CUDA  https://www.cnblogs.com/hdu-zsk/p/5950924.html

    配置环境变量  计算机->属性->高级系统设置->环境变量

    编辑系统变量‘path’,追加D:Program Files (x86)AnacondaMinGWx86_64-w64-mingw32lib;D:Program Files (x86)AnacondaMinGWin;

     

    步骤三 安装theano

    进入Anaconda Prompt命令窗口,输入命令:

    conda install theano pygpu

    如果安装失败,我们先卸载,然后在尝试重新安装

    conda uninstall theano
    conda  install theano

    新建环境变量‘PYTHONPATH’:添加值D:Program Files (x86)AnacondaLibsite-packages heano;(这个路径添加了运行spyder可能出错(打不开),亲测)

    如果你的电脑没有GPU,安装到这里就可以了,下面的步骤不用安装。

    步骤四 PTVS安装以及VS环境变量设置

    安装完成之后,我们需要为VS安装PTVS。适用于Visual Studio的Python工具(PTVS)是Visual Studio的开源插件,支持使用Python语言进行编程。

    具体安装我们可以参考:在 Windows 上的 Visual Studio 中安装 Python 支持

    由于我在之前安装的Anconda,自带的是python3.5.2,而且我安装的visual studio2015,所以可以直接安装Python解释器。

    如果你使用的是visual studio2013,这里就有个问题(vs2015的可以跳过):

    如果你安装的是python3.6,由于vs2013不支持python3.6。因此,你需要重新安装python版本,这里可以选择安装python3.5。如果你是vs2015之后的版本,你可以跳过这里。

    我们可以参考文章:如何将Anaconda更新到想要的python版本

    对于vs2013,我们可以卸载Anaconda,重新安装一个带有python3.5的版本(比如Anaconda3-4.0.0,我建议重装)。或者使用conda命令在线更新。重新安装比较简单,我就介绍一下使用conda命令更新。

    打开Anaconda Prompt,然后用conda命令更新到python3.5.

    conda update conda ——等待更新完,然后输入以下命令,这个较快

    #创建一个名为python35的环境,指定Python版本是3.5(不用管是3.5.x,conda会为我们自动寻找3.5.x中的最新版本)

    conda create --name python34 python=3.5

    activate python35 --激活3.5版本,使用这个

    #此时次输入

    python --version

    #可以得到`Python 3.5.5 即系统已经切换到了3.5的环境

    #如果想返回默认的python 3.6.2环境,运行

    deactivate python35

    #删除一个已有的环境

    conda remove --name python35 --all

    等待python3.5安装成功。这里我需要重新执行步骤2 安装minGw,libpython,和步骤三安装theano。

    然后需要去下载PTVS插件并安装:Visual Studio 2013 PTVS 2.2

    如果你是VS2015或者以后的版本,具体安装以及VS环境变量的配置比较简单你可以参考:在 Windows 上的 Visual Studio 中安装 Python 支持

    然后需要手标识现有环境,打开vs2013.新建一个python项目,并对该项目如下操作:

     

    然后选择python 3.5.

     

    步骤五 配置路径文件

    找到路径C:Users你的用户名,在下面创建文件.theanorc.txt

    此处我在C:UsersAdministrator路径下创建了.theanorc.txt文件

    编辑文件输入内容

    [global]
    
    openmp=False
    
    [blas]
    Idflags=
    
    [nvcc]  
    fastmath=True  
    flags =-LD:Program Files (x86)Anacondalibs  
    compiler_bindir=C:Program Files (x86)Microsoft Visual Studio 12.0VCin  
    
    [gcc]
    cxxflags=-ID:Program Files (x86)AnacondaMinGW

    注意标红的路径是根据你自己的MinGW来设置的,不需要和我的一样,上面的:

    compiler_bindir=C:Program Files (x86)Microsoft Visual Studio 12.0VCin  

    如果你的电脑是装vs2012,那么就把10.0改为11.0。这个也就是你安装的vs所在的目录。

    步骤六 测试配置文件是否有误

    (1)测试方案一
    进入python的shell脚本,输入内容:
    >>> import theano
    >>> theano.test()
     
    查看运行结果是否正确。如果出现错误,请查看是否是以下几种错误:

    出现这种错误 ,或者我们在命令窗口执行spyder也出现如下问题:

    针对configparse问题,我们可以参考文章:

    python安装配置Theano ImportError:cannot import name 'configparser'

    我们清除安装theano时的路径配置,即:新建环境变量‘PYTHONPATH’:添加值D:Program Files (x86)AnacondaLibsite-packages heano;然后重新尝试运行

    如果import theano出现pygpu相关的错误,可以尝试运行(如果你已经安装了CUDU可能会出现这种问题):

    conda install pygpu

    打开spyder进行测试,如果还有spyder闪退的问题,可以尝试重新安装:

    conda uninstall spyder        #先卸载
    conda install spyder #在安装

    如果还是不行,你可以到网上搜索其他解决方案,或者重新换个版本的Anaconda安装。

    (2)测试方案二
    我们也可以编辑如下代码测试
    import numpy as np
    import time
    import theano
    A = np.random.rand(1000,10000).astype(theano.config.floatX)
    B = np.random.rand(10000,1000).astype(theano.config.floatX)
    np_start = time.time()
    AB = A.dot(B)
    np_end = time.time()
    X,Y = theano.tensor.matrices('XY')
    mf = theano.function([X,Y],X.dot(Y))
    t_start = time.time()
    tAB = mf(A,B)
    t_end = time.time()
    print("NP time: %f[s], theano time: %f[s] (times should be close when run on CPU!)" %(
                                                np_end-np_start, t_end-t_start))
    print ("Result difference: %f" % (np.abs(AB-tAB).max(), ))

    测试结果如下:

    如果上面的np time 和theano time 差不多,那就代表你上面的配置没有问题了,这个有的时候电脑还有其他的任务,也有可能导致运行的时间不一致。

    步骤七 安装cuda

    关于theano以及cuda的安装参考教程
    深度学习(二)theano环境搭建
    windows下theano开发环境搭建(实现了GPU加速)

    先检查自己的显卡支持什么版本的CUDA

    (1)首先打开控制面板,在控制面板进行搜索。

    (2)然后,双击NVIDIA控制面板,打开如下的控制面板,点击帮助

    点击系统信息,我们会看到

    (3)选择组件,然后会看到红色框的内容,箭头所指的CUDA版本,就是你电脑支持的CUDA版本。

    然后我们去官网下载我们显卡支持的CUDA版本

     

     程序下载完后后,双击安装:

    到这一步,问题出现了,告诉我说图形驱动与显卡不兼容,如果继续安装,即使安装成功了,也不能使用cuda。因此我去下载一个比较新的CUDA,我下载了cuda_8.0.61_windows.exe(注意下面我使用的是cuda9.0的截图,但是事实证明在我的电脑安装9.0后,gpu运行不了,这里你最好安装cuda8.0,步骤同下)。

     

    选择自定义安装,然后把所有包的都勾选上,省的后面出现什么错误。这一步有可能会遇到驱动冲突,导致某些包安装失败

    如果某些包安装失败,后面使用theano的时候,会跳出错误。如果图形驱动安装失败,运行theano的时候就出现错误,提示为cuda版本与驱动版本不一致。因此如果你安装cuda的过程中,有出现安装失败的,那么请你接着往下看。安装失败一般是驱动冲突的问题,这个时候我的方法是用驱动精灵卸载掉显卡驱动,然后在进行安装。

     安装完后测试一下是否安装正确。在命令窗口输入:

    nvcc -V

    回车查看是否有版本信息。若出现版本信息,则证明nvcc安装成功,如下图所示:

     

    接着我们运行一个cuda自带的测试例子。

     

    由于我的电脑安装了VS2015(这个自己下载安装),所以在这里打开Samples_vs2015.sln项目,这个例子目录为:C:ProgramDataNVIDIA CorporationCUDA Samplesv9.0(在安装完我们勾选launch samples会自动打开这个文件夹) 。编译运行得到如下结果,表示安装成功:

    安装完了cuda,你还需要cuDNN:

    cuDNN下载地址https://developer.nvidia.com/rdp/cudnn-download,cuda8.0对应的版本是cudnn-8.0-windows7-x64-v6.0.zip

    我们需要把下面三个文件中对应的文件拷贝到C:Program FilesNVIDIA GPU Computing ToolkitCUDAv8.0路径对应的文件下。

    然后我们需要重新配置.theanorc.txt文件

    [blas]   
    ldflags=  
          
    [global]  
    device = gpu  
    floatX = float32  
       
    [cuda]
    root = C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0 [nvcc] fastmath=True flags =-LD:Program Files (x86)Anacondalibs compiler_bindir=C:Program Files (x86)Microsoft Visual Studio 12.0VCin [gcc] cxxflags = -ID:Program Files (x86)AnacondaMinGW

    这样就完成了theano的GPU配置了。

    步骤八 完整测试

    测试时,执行如下程序(详细内容可以参考官方链接:http://deeplearning.net/software/theano/tutorial/using_gpu.html)

    from theano import function, config, shared, tensor
    import numpy
    import time
    
    vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
    iters = 1000
    
    rng = numpy.random.RandomState(22)
    x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
    f = function([], tensor.exp(x))
    print(f.maker.fgraph.toposort())
    t0 = time.time()
    for i in range(iters):
        r = f()
    t1 = time.time()
    print("Looping %d times took %f seconds" % (iters, t1 - t0))
    print("Result is %s" % (r,))
    if numpy.any([isinstance(x.op, tensor.Elemwise) and
                  ('Gpu' not in type(x.op).__name__)
                  for x in f.maker.fgraph.toposort()]):
        print('Used the cpu')
    else:
        print('Used the gpu')

    运行结果如下:

    (1)GPU测试

    下面是用GPU加速的运行结果:

     

     如上运行结果可知,用gpu进行计算时间差不多是0.68秒左右。如果想切换成只用gpu的测试的话,我是通过更改文件:.theanorc.txt的内容。那么.theanorc.txt的内容为:

    [blas]   
    ldflags=

    [global]
    device = cuda
    floatX = float32
    optimizer = None

    [cuda]
    root = C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0

    [nvcc] fastmath=True flags =-LD:Program Files (x86)Anacondalibs compiler_bindir=C:Program Files (x86)Microsoft Visual Studio 12.0VCin [gcc] cxxflags = -ID:Program Files (x86)AnacondaMinGW

    (2)CPU测试。

    如果想关闭gpu,进行cpu测试那么就把.theanorc.txt内容改为:

    [blas]   
    ldflags=  
          
          
    [gcc]   
    cxxflags = -ID:Program Files (x86)AnacondaMinGW

    重启电脑或者重启spyder内核。下面是测试结果图:

     

    测试了结果,只用cpu花了14秒的时间,也就是说对于我的电脑,使用gpu进行加速,这速度提高了近20倍。

    (1)如果执行import theano出现

    'You are tring to use the old GPU back-end. '

    ValueError: You are tring to use the old GPU back-end. It was removed from Theano. Use device=cuda* now. See Theano/Theano for more information.

    我们可以通过修改.theanorc.txt文件  把device=gpu更改为device=cuda

    [global]
    device = cuda
    floatX = float32
    optimizer = None 

    (2)如果运行出现下面错误:

    我们可以配置.thranorc.txt文件,忽略cuDNN

    [dnn]
    enabled = False

    (3)如果出现CVM未定义的错误,按照下面方法移除该文件夹是可以起作用的(亲测)。

     (4)执行出现MKL_THREADING_LAYER=GNU错误

    我们使用如下命令:

    conda install mkl=2017

    如果这些方法都不能解决这些错误,我只能推荐你看一下这篇文章,希望能够对你有帮助

    这是一份你们需要的Windows版深度学习软件安装指南 

    步骤九 安装tensorflow

    1、cpu环境

    如果你使用cpu,那么在命令窗口下运行:

    conda install tensorflow

    2、gpu环境

    如果你使用gpu, 安装TensorFlow指定版本(清华源上有的,更换链接最后的版本名称就行了),那么在命令窗口下运行:

    pip install --upgrade https://mirrors.tuna.tsinghua.edu.cn/tensorflow/windows/gpu/tensorflow_gpu-1.3.0rc0-cp35-cp35m-win_amd64.whl

    测试
    import tensorflow as tf
    (1)print(tf.test.gpu_device_name())
    
    或者
    (2)print(tf.test.is_gpu_available())
    
    如果(1)输出device:/gpu:0或者(2)输出True,则表明使用的GPU

    在linux环境下安装如下

    步骤一  安装Anaconda

    Anaconda是一个用于科学计算的python发行版,支持linux,mac,windows系统,提供了包管理和环境管理的功能,Anaconda是一个打包的集合,里面装好了conda,某个版本的python,众多的packages等,科学计算工具等

    下载中科大镜像:http://mirrors.ustc.edu.cn/

     从archive路径下载Anaconda3-5.0.1-linux-86_64.sh

    在home文件夹下创建一个文件夹,命名为Anaconda,把下载好的程序复制到这里,然后右键在终端打开,输入:

    bash Anaconda3-5.0.1-Linux-x86_64.sh

    然后按下enter键继续安装,一直按enter键,直至:

    然后按下yes继续安装,后面选择安装路径,我是安装在当前文件夹下的program文件夹下:

    执行到这里说明已经安装成功

    步骤二 安装cuda

    1.首先确保自己的操作系统是最新的,打开终端运行以下命令

    sudo apt-get update  
    sudo apt-get upgrade  
    sudo apt-get install build-essential  
    sudo apt-get autoremove

    然后安装git,在终端输入

    sudo apt-get install git

    2.首先检验自己的电脑是否支持CUDA,然后安装NVIDIA驱动

    首先查看显卡型号,在终端输入

    lspci | grep -i nvidia

    执行结果如下

    • 到Nvidia官网查找你显卡对应的最新驱动和系统设置。你可以从此网站上下载并安装驱动,但这样做会升级到更新的驱动,并且卸载的时候会有些麻烦。此外,这么做需要你退出X服务会话,从终端进行安装,这比较麻烦。

    • 我们将使用apt-get来安装驱动。到 “Proprietary GPU Drivers” PPA中查看是否有你最新的驱动。注意,最新的驱动一定是最稳定的。你也可以安装网页上推荐的驱动版本。添加”Proprietary GPU Drivers” PPA 资源库。在写这篇文章的时候,最新版本是396.18,然而推荐版本是390.48:

    •  

    在终端输入

    sudo add-apt-repository ppa:graphics-drivers/ppa
    sudo apt-get update
    sudo apt-get install nvidia-390

    重新启动系统

    sudo shutdown -r now

    检查以确保安装了正确版本的NVIDIA驱动

    cat /proc/driver/nvidia/version

     也可以重启后输入如下命令

    nvidia-smi

    如果显示GPU信息,则表明驱动程序安装成功。 也可以通过nvidia-settings查看GPU的信息。

    若安装失败,卸载未安装成功的显卡驱动,再重新安装

    sudo apt-get remove --purge nvidia-*                   #卸载显卡驱动 

    3.CUDA安装

    首先去cuda官网下载cuda工具包。
    操作系统选择Linux,处理器架构选择x86_64,发布版选择Ubuntu,版本选择16.04,安装类型选择deb(local)。然后下载第一个:

    然后切换到cuda工具包所在目录下,执行如下命令(cuda的安装路径全部使用默认路径):

    sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
    sudo apt-get update
    sudo apt-get install cuda

    等待cuda安装结束。如果安装过程中遇到内存不足的问题,执行如下命令

    df -h 

    我们会看到根目录/下内存不足,这主要是因为在安装系统的时候我给根目录只分配了10G,

    当使用Linux系统的时候,发现根目录(/)的空间不是很充足,而其他目录空间有很大的空闲,我们需要针对现在已有的空间进行调整。

    具体也可以参考文章:Linux下调整根目录的空间大小

     为了避免你在安装时候,也出现这种问题,建议安装时给/目录分配30G以上的空间。

     安装结束之后(有一个/usr/local/cuda的目录链接到/usr/local/cuda-8.0,后面配置环境变量时可直接使用/usr/local/cuda目录),配置环境变量: 可以配置系统级别的环境变量,也可以配置用户级别的环境变量。 

    配置系统级别的环境变量,请使用如下命令:

    sudo vi /etc/profile

    配置用户级别的环境变量,请使用如下命令

    vi ~/.bashrc

    打开文件后,在文件的结尾部分添加如下文本行:

     export PATH=/usr/local/cuda/bin:$PATH
     export LD_LIBRARY_PATH=/usr/local/cude/lib64:$LD_LIBRARY_PATH

    如果是配置用户级别的环境变量,也可以直接运行如下命令:

    echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
    echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
    source ~/.bashrc

    检查以确保安装了正确版本的CUDA

    nvcc -V

    重启系统

    sudo shutdown -r now

    4.检查CUDA安装(可选)

    在CUDA安装目录安装样例。编译它们(需要几分钟):

    /usr/local/cuda/bin/cuda-install-samples-8.0.sh ~/cuda-samples
    cd ~/cuda-samples/NVIDIA*Samples
    make -j $(($(nproc) + 1))

    注意:(-j $(($(nproc) + 1)))命令使用你机器上的核心数并行执行,所以编译会更快

    • 运行deviceQuery,确保它能检测到显卡并测试通过
    bin/x86_64/linux/release/deviceQuery

    5.cuDNN安装

    cuDNN是为DNN设计的CPU加速库。它能在多种情况下帮助提升执行速度。为了下载cuDNN库,你需要到Nvidia网站https://developer.nvidia.com/cudnn上进行注册。立即就能够批准。一旦注册批准,下载Linux版本的cuDNN v7。

    点开下图中的cuDNN v7.1.2(Mar21.1018) for CUDA 8.0,然后选择第一个下载。

    以下命令请在cuDNN文件所在目录执行。

    tar -zxvf cudnn-8.0-linux-x64-v7.1.tgz
    sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
    sudo chmod a+r /usr/local/cuda/include/cudnn.h
    sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

    以上命令就将cuDNN的头文件、静态库和动态库都放入了cuda目录下。

     

    最后,执行如下命令,以防在编译Tensorflow或者其他开源深度学习框架时找不到动态库。

    sudo ldconfig /usr/local/cuda/lib64

    注:ldconfig命令的用途是在目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录中,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。

    6.theano安装

    打开终端输入:

    conda install theano-gpu

     如果安装有问题,参考官网进行安装:http://www.deeplearning.net/software/theano/install_ubuntu.html#stable-installation

    conda install theano pygpu
    conda install mkl=2017

    7.配置.theanorc.txt文件

    需配置.theanorc以便使用gpu
    sudo gedit ~/.theanorc
    输入一下内容
    [global]
    floatX=float32
    device=cuda
    [cuda]
    root=/usr/local/cuda-8.0
    [nvcc]
    flags=-D_FORCE_INLINES
    fastmath=True

    8.测试安装

    测试时,执行如下程序(详细内容可以参考官方链接:http://deeplearning.net/software/theano/tutorial/using_gpu.html)

    from theano import function, config, shared, tensor
    import numpy
    import time
    
    vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
    iters = 1000
    
    rng = numpy.random.RandomState(22)
    x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
    f = function([], tensor.exp(x))
    print(f.maker.fgraph.toposort())
    t0 = time.time()
    for i in range(iters):
        r = f()
    t1 = time.time()
    print("Looping %d times took %f seconds" % (iters, t1 - t0))
    print("Result is %s" % (r,))
    if numpy.any([isinstance(x.op, tensor.Elemwise) and
                  ('Gpu' not in type(x.op).__name__)
                  for x in f.maker.fgraph.toposort()]):
        print('Used the cpu')
    else:
        print('Used the gpu')

    在cpu或者是在gpu上运行可以通过修改.theanorc文件中为device = cpu或者device = cuda来决定。每次修改之后,只有重启spyder内核或者重启电脑才会生效。

    GPU下运行如下:

     

    步骤三 安装tensorflow

    在终端下运行

    conda install tensorflow
    conda install tensorflow-gpu
    测试
    import tensorflow as tf
    (1)print(tf.test.gpu_device_name())

    或者
    (2)print(tf.test.is_gpu_available())

    如果(1)输出device:/gpu:0或者(2)输出True,则表明使用的GPU

    参考文章:

    [1]深度学习环境搭建

    [2]Linux安装Anaconda和cuda、cdnn和Tensorflow-gpu

    [3]win10下通过Anaconda安装TensorFlow-GPU1.3版本,并配置pycharm运行Mnist手写识别程序(或者使用这个安装)

  • 相关阅读:
    Centos7永久修改hostname
    centos静态绑定IP地址
    Salesforce 报表开发
    Salesforce 测试类的实践
    Salesforce Aura开发 Component组件开发实践
    Salesforce Aura 开发 Hello World开发实践
    PHP设计模式之工厂模式
    PHP设计模式之单例模式
    PHP截取带有汉字的字符串,将汉字按两个字节计算
    window下安装Apache+PHP
  • 原文地址:https://www.cnblogs.com/zyly/p/8532368.html
Copyright © 2011-2022 走看看