您的位置:首页 > 其它

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

2016-08-17 23:03 681 查看
由于所要做的工作的一部分需要在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=float32
device=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, sandbox
import theano.tensor as T
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([], 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 seconds
Result is [ 1.23178029  1.61879349  1.52278066 ...,  2.20771813  2.29967761
1.62323296]
Used the gpu


如果不是:

(1)可能你的系统有UEFI安全保护,你可以回到第一步继续走一遍了。

(2)如果仍旧失败,那么可能不是UEFI的问题,请自行解决。

参考:

(就是上边标注那些。。。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐