ubuntu 16.04 Anaconda+cuda+theano 深度学习框架安装

来源:互联网 发布:网络信息服务许可证 编辑:程序博客网 时间:2024/05/16 19:23

由于所要做的工作的一部分需要在Linux下完成,而且它是基于深度学习的,所以在安装完成ubuntu16.04后决定顺便在ubuntu上也安装上Theano(因为已经安装了Windows下的Theano,所以说“也”),然而这个“顺便”花费了我两天大约30小时的时间。
好了,言归正传,下面介绍我的安装过程:

1.检查是否是UEFI模式

由于CUDA需要安装Nvidia的驱动,所以有一个导致失败的因素需要在安装前解决——如果你的电脑有UEFI保护的话。如果没有,请忽略此节。什么?你不知道你的电脑是否有UEFI保护,我介绍两种方式供你选择:
a. 自己百度。
b. 先不管它,等你安装不上刚好又有提示的话,那么恭喜你,你可以用到本节的内容了。
(顺便说一句,我用的是第二种 =_=|| )

解决方法:开机进入bios,打开传统安装方式(Legacy),或者参考如何关闭UEFI(http://jingyan.baidu.com/article/1876c852bc6a82890b1376f0.html)
我的解决办法是打开Legacy模式,然后就完美解决了(没有关闭UEFI而且也是在UEFI模式下安装的ubuntu16.04),这里可能有不同的方式,请自己探索解决。

2. 安装 windows + ubuntu16.04双系统

这部分没有什么好说的,可以参照:
http://jingyan.baidu.com/article/60ccbceb18624464cab197ea.html
把14.04换成16.04也完全可以安装成功,这部分应该没有太大问题。

3.安装Nvidia驱动

注:
(1). 检查一下自己的电脑是否是N卡,如果不是,别费劲了,本教程到此结束
(2). 检查自己的N卡的计算能力是否合适,比如你要安装cuDNN的话计算能力至少要3.0,当然,如果不需要的话,那么好像也要看看

首先,通过快捷键Ctrl+Alt+T打开终端,然后加入官方ppa源:

$ sudo  add-apt-repository ppa:graphics-drivers/ppa

需要输入用户密码,并确认链接源。之后刷新软件库并安装最新的驱动,在命令行输入:

$ sudo apt-get update
$ sudo apt-get install nvidia-370 nvidia-settings nvidia-prime

安装完成之后重启,可以通过系查看系统属性,看是否是nvidia的显卡。另外,也可以通过下面命令看是否安装成功:

$ nvidia-settings

参考:http://www.linuxidc.com/Linux/2016-07/132860.htm)

4. 安装Theano

a. 下载Anaconda(如Anaconda3-4.1.1-Linux-x86_64.sh),在同目录下执行

bash Anaconda3-4.1.1-Linux-x86_64.sh

安装后重启。
b. 安装nvidia-cuda-toolkit
执行以下命令即可,不用添加环境变量之类的

sudo apt-get install nvidia-cuda-toolkit

c. 安装Theano

conda install theano

d. 配置

sudo gedit ~/.theanorc

打开 .theanorc后加入如下代码

[global]floatX=float32device=gpu[cuda]root=/usr/lib/nvidia-cuda-toolkit[nvcc]flags=-D_FORCE_INLINES

完成。
参考:我忘了是谁的CSDN博客了,找了半天没找到地址。。。)

测试:

python -c "import theano"

如果显示GPU版本如:

Using gpu device 0: GeForce GTX 965M (CNMeM is disabled, cuDNN 5005)

则安装成功(括号里面的不用管)。
也可以用 以下代码进行

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 range(iters):    r = f()t1 = time.time()print ('Looping %d times took' % iters, t1 - t0, 'seconds')print ('Result is', r)if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):    print ('Used the cpu')else:    print ('Used the gpu')

结果类似下面:

Using gpu device 0: GeForce GTX 965M (CNMeM is disabled, cuDNN 5005)[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]Looping 1000 times took 1.976933 secondsResult is [ 1.23178029  1.61879349  1.52278066 ...,  2.20771813  2.29967761  1.62323296]Used the gpu

如果不是:
(1)可能你的系统有UEFI安全保护,你可以回到第一步继续走一遍了。
(2)如果仍旧失败,那么可能不是UEFI的问题,请自行解决。

参考:
(就是上边标注那些。。。)

1 0
原创粉丝点击