Ubuntu Server 16.04 配置Keras

来源:互联网 发布:淘宝阿迪达斯折扣店 编辑:程序博客网 时间:2024/05/22 06:45

Ubuntu Server 16.04 配置Keras

在整个配置过程之前,由于本文使用大量下载,安装的工作,建议使用alt+f1,f2使用多个终端进行工作,节省时间,同时由于个人在配置过程中出现了各种各样的问题,所以可能会配置多余的东西,欢迎批评指正。

首先配置python环境

sudo apt-get install python-dev python-pip

然后选择y使得继续安装,然后可以通过python测试是否安装成功。

对于Keras的首页上来说,安装顺序第一个是要安装numpy和scipy,但是这两个还需要引用一些包,首先是blas,然后是lapack和atlas,所以要先安装这几个,然后我就觉得cblas也顺便装上了,防止有人不知道,安装方式是先下载压缩包,使用命令wget,如果没有可以使用命令获取这个服务。

sudo apt-get install wget

然后就是通过wget下载文件了,形式如下:

sudo wget http://web/../name

blas的下载地址是http://www.netlib.org/blas/blas.tgz,cblas的下载地址是http://www.netlib.org/blas/blast-forum/cblas.tgz,lapack的官方包地址: http://www.netlib.org/lapack/,atlas的官方包地址:http://sourceforge.net/projects/math-atlas/,但是atlas可以简便安装,后面可以看一下。

选择一个包进行下载,就比如blas命令是:

sudo wget http://www.netlib.org/blas/blas.tgz

然后对于各个包安装方式如下:

blas:

下载文件后,对压缩包进行解压,进入目录,执行命令为:
gfortran -c -O3 *.f # 编译所有的 .f 文件,生成 .o文件
ar rv libblas.a *.o # 链接所有的 .o文件,生成 .a 文件
su cp libblas.a /usr/local/lib # 将库文件复制到系统库目录

cblas:

进入CBLAS文件夹,根据你自己的计算机平台,将目录下某个 Makefile.XXX 复制为 Makefile.in , XXX表示计算机的平台,如果是Linux,那么就将Makefile.LINUX 复制为 Makefile.in,然后使用下面的命令安装:
cp ../BLAS/libblas.a testing # 将上一步编译成功的 libblas.a 复制到 CBLAS目录下的testing子目录
make # 编译所有的目录
sudo cp lib/cblas_LINUX.a /usr/local/lib/libcblas.a # 将库文件复制到系统库目录下

lapack:

编译 lapack以及lapacke,这一步比较麻烦,首先当然是进入lapack-3.4.2文件夹,然后根据平台的特点,将INSTALL目录下对应的make.inc.XXX 复制一份到 lapack-3.4.2目录下,并命名为make.inc, 这里我复制的是 INSTALL/make.inc.gfortran,因为我这里用的是gfortran编译器。
修改lapack-3.4.2/Makefile, 因为lapack以来于blas库,所以需要做如下修改
#lib: lapacklib tmglib
lib: blaslib variants lapacklig tmglib
make # 编译所有的lapack文件
cd lapacke # 进入lapacke 文件夹,这个文件夹包含lapack的C语言接口文件
make # 编译lapacke
cp include/*.h /usr/local/include #将lapacke的头文件复制到系统头文件目录
cd .. #返回到 lapack-3.4.2 目录
cp *.a /usr/local/lib # 将生成的所有库文件复制到系统库目录

altas:

由于安装比较麻烦,我直接使用命令就可以:

sudo apt-get install libatlas-dev

然后numpy和scipy需要nose的支持,所以再安装一个nose:

sudo apt-get install python-nose

然后还有各种包:

# 安装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# 安装numpy,scipysudo apt-get install python-numpy python-scipy

测试numpy和scipy是否完成安装,可以在python中,调用并执行numpy.test()和scipy.test(),进行测试,numpy.test()一般是十几秒,scipy.test()差不多一两分钟的样子下面Theano.test()多于半个小时吧,反正我没跑完就给停了。

安装Keras需要Theano的环境,同时需要GPU的支持,使得矩阵计算可以更快速,那么就需要在Ubuntu Server上安装相关的显卡驱动,对于我的电脑版本,使用的是NVIDIA的显卡,所以直接安装相关驱动就可以了。

查看电脑显卡型号:

lspci |grep VGA

或者直接输入lspci可以查看所有的 硬件设备,在当中找到显卡的相关信息。

然后后面装Theano的时候,theano.test()经常会出现pyCUDA引用出错的问题,所以我先安装了pyCUDA的相关组件,由于pyCUDA需要GPU的工作,所以还需要安装GPU卡的驱动,但是不能使用Ubuntu的图形界面,所以首先先关闭图形界面:

sudo service lightdm stop

当然这句话是对非Server的用户而言的,因为Server是没有这个服务的,同时需要屏蔽Nouveau驱动,否则容易在装完cuda的时候直接黑屏,首先修改黑名单:

sudo vi /etc/modprobe.d/blacklist.conf

然后添加以下内容:

blacklist vga16fbblacklist rivafbblacklist nvidiafbblacklist rivatv

首先安装nvidia驱动:

sudo apt-get install nvidia-375

可以通过命令查看是否安装完成:

nvidia -smi

然后下载cuda的相关文件,https://developer.nvidia.com/cuda-downloads,我下载的是cuda_8.0.61_375.26_linux.run,自带GPU的驱动,所以就直接下载之后,通过命令执行安装:

chmod a+x cuda_8.0.61_375.26_linux.runsudo ./cuda_8.0.61_375.26_linux.run

有可能在安装nvidia驱动的时候会提示关闭x server,可以通过以下语句关闭,重新安装。

sudo /etc/init.d/lightdm stop

安装cuda后需要修改sudo gedit ~/.bashrc,添加以下内容:

64位:export PATH=/usr/local/cuda-7.5/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH32位:export PATH=/usr/local/cuda-7.5/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib:$LD_LIBRARY_PATH

同时也可以通过apt-get方式获取nvidia-cuda-toolkit:

sudo apt-get install nvidia-cuda-toolkit

然后在使用theano的时候,需要numpy,scipy等库,有Anaconda的可以包含这些库,所以下载并安装Anaconda:https://www.continuum.io/downloads#linux,然后通过以下命令安装,期间询问是否添加到PATH时候,选择yes:

bash Anaconda2-4.4.0-Linux-x86_64.sh

然后让配置文件生效:

source ~/.bashrc

然后使用apt-get安装numpy和scipy时,好像还是可以安装的,不知道是不是依赖产生了问题,所以我又安装了一次,由于需要nose包,所以也先安装了nose包。

sudo apt-get python-nose python-numpy python-scipy

然后安装yaml

sudo -H pip install pyyaml

再安装Theano

sudo -H pip install Theano

通过一段cpu和gpu的查看代码,可以查看是否完成了安装:

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 %f seconds" % (iters, t1 - t0))print("Result is %s" % (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')

有可能会出现许多关于gpu无法使用的问题,我的问题是:

ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.8.0: cannot open shared object file: No such file or directory  WARNING (theano.sandbox.cuda): CUDA is installed, but device gpu is not available  (error: cuda unavailable)  [Elemwise{exp,no_inplace}(<TensorType(float32, vector)>)]  Looping 1000 times took 2.026935 seconds  Result is [ 1.23178029  1.61879337  1.52278066 ...,  2.20771813  2.29967761    1.62323284]  Used the cpu 

错误原因是文件找不到,解决办法:
执行命令: ldconfig /usr/local/cuda/lib64就可以解决了。

原创粉丝点击