简介:
Keras是基于theano/tensorflow的深度学习二次框架,该框架使用python语言,十分易用。
安装环境:
操作系统:WIN10/64位 显卡:GTX1050
Visual Studio:2015 Python:2.7(Anaconda2) CUDA:cuda_8.0.61_win10
CuDNN:cudnn-8.0-windows10-x64-v5.1 Git:Git-2.10.2-64-bit
主要参考文档:
Keras中文文档:http://keras-cn.readthedocs.io/en/latest/getting_started/keras_windows/
1、安装Visual Studio 2015和Git
GTX1050显卡只支持最新的CUDA8,而CUDA8仅支持VS2015。
Visual Studio 2015下载地址:http://www.itellyou.cn/
Git下载地址:https://git-scm.com/download/win
Git安装的选项可参考如下:
安装完成后,在cmd中输入git并执行,会出现git相关信息,表示安装成功。
2、Anaconda2的安装
选择安装Python 2.7 version,下载地址:https://www.continuum.io/downloads
本文版本为Anaconda2-4.3.0.1-Windows-x86_64
安装的位置可以任意配置,本文选择安装在C盘根目录下。
选择第一个√,会自动添加相关路径到path环境变量
3、安装GCC编译环境
在命令提示符中运行如下指令,按照提示操作。自动下载mingw过程中容易被墙,如果下载速度过慢,可以自备梯子。
conda install mingw libpython
安装完成后,需要去设置一下path环境变量,添加以下两条到path变量中(具体路径依据自己的实际安装位置)
C:\Anaconda2\MinGW\bin;
C:\Anaconda2\MinGW\x86_64-w64-mingw32\lib;
4、安装CUDA
Cuda的安装比较波折,一开始出现如下提示:
到cuda官网去看(https://developer.nvidia.com/cuda-gpus),显示如下:
一度怀疑GTX1050显卡移动版还没有被cuda支持,但是这是一个误导,cuda8是完全支持gtx1050显卡的。
查遍stackoverflow和cuda官方社区后,有人说这是因为cuda安装包里带的显卡驱动版本比较旧,没法识别较新的已安装的驱动。我们直接点继续,在后边安装驱动时不要选择包里旧版本的驱动即可。不知道是不是这个道理,但是决定照做试一试。
关键一步:
添加以下路径到path环境变量
C:\ProgramFiles (x86)\Microsoft Visual Studio 14.0\VC\bin
其目的是将VS中的cl.exe编译器与cuda的nvcc编译器相关联。
为了验证cuda是否安装成功,在VS中运行cuda的示例代码,其工程文件路径为C:\ProgramData\NVIDIA Corporation\CUDASamples\v8.0\Samples_vs2015.sln
在解决方案中选择一个示例,比如直接点Ctrl+F5会运行,输出如下,则说明在VS中可以运行cuda代码,还可以再找几个其他的示例调试运行一下测试。
然后我们测试cuda 的nvcc编译器不再vs环境在是否可以编译.cu代码。
我们在C:\Users\当前用户名\下新建test.cu文件,随便写一段C/C++代码:
#include "stdio.h"
int main()
{
printf("test");
return 0;
}
然后输入下边的指令编译一下
nvcc -o test.exe test.cu
然后博主在一开始得到如下信息,说明没有添加vs中的cl编译器路径C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin到path环境变量,导致无法编译。添加到path环境变量就好了。
再次运行后提示
没有error,然后再输入
test.exe
nvcc编译器就没有问题了。
4、cudnn加速库(可选)的安装
下载地址:https://developer.nvidia.com/cudnn这个需要先注册一下,然后就可以下载了。
下载下来是一个压缩包,解压出来有三个文件夹,替换掉cuda安装目录下的对应文件夹。cuda默认安装路径为C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA
5、安装theano框架
在cmd中输入:
pip install theano -U --pre
等待安装完成。
添加PYTHONPATH环境变量,值为:
C:\Anaconda2\Lib\site-packages\theano
在C:\Users\当前用户名\ 下新建.theanorc.txt文件,先用cpu模式测试一下theano的基本安装是否成功
[global]
openmp=True
device = cpu
floatX = float32
allow_input_downcast=True
[gcc]
cxxflags=-IC:\Anaconda2\MinGW
在cmd中输入python进入python交互环境,然后试一下输入
import theano
theano.test()
进行theano功能测试,这个耗时比较长,运行完成后如果没有error,theano就基本安装好了。
博主这里出现若干error,每个error都说找不到一个库(名字记不得了),只需要在cmd里输入pip install xxxxxxxxxx安装上就好了。
然后修改.theanorc.txt文件内容如下(最后删掉汉字):
[global]
openmp=False
device = gpu
optimizer_including=cudnn #不用cudnn的话就不要这句
floatX = float32
allow_input_downcast=True
[lib]
cnmem = 0.8
[blas]
ldflags=
[gcc]
cxxflags=-IC:\Anaconda2\MinGW
[nvcc]
fastmath = True
--flags=-LC:\Anaconda2\libs #改成自己装的目录
--compiler_bindir=C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\bin #改成自己装的目录
在cmd中输入
python
在python交互环境下输入
import theano
提示的是gpu相关信息的话,就说明theano安装成功了。
博主这里一开始会出现错误,一番波折后才发现是因为没有添加vs中的cl编译器路径C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin到path环境变量,导致无法编译,因此要先如步骤4描述的那样验证一下cuda安装是否成功,是否能编译。
接下来进行速度测试。新建一个test.py 文件,编辑如下
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 xrange(iters):
r= f()
t1 = time.time()
print("Looping %d times took %fseconds" % (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 thegpu')
运行结果如下所示,GTX1050运行耗时0.312秒。
6、安装keras
如果只是安装theano,到第五步就可以了。接下来安装keras。
在cmd中输入
pip install keras -U –pre
提示安装成功后,输入python进入python交互环境,输入
import keras
此时会提示找不到TensorFlow后端。因为keras默认后端是TensorFlow,我们需要改成theano。
在运行了导入keras模块的语句后,keras系统会在目录下建立一个名为.keras的文件夹,我们进入该文件夹,新建keras.json文件,编辑如下:
{
"image_dim_ordering": "tf",
"epsilon": 1e-07,
"floatx": "float32",
"backend": "theano"
}
然后我们再在python交互环境下输入
import keras
提示Using Theano backend.就说明keras安装成功了;提示GPU等信息则说明可运行于GPU下。
最后我们下载keras包(在cmd中药事先用cd指令,切换到目标目录下)在cmd中输入:
下载mnist.pkl.gz数据集可能被墙,速度比较慢,可以自备梯子,或者手动下载:
https://s3.amazonaws.com/img-datasets/mnist.pkl.gzkeras用的mnist数据集,60000 训练样本,10000 测试样本;
放到C:\Users\MilesGe\.keras\datasets目录下,然后再进行运行。
GTX1050显卡运行结果如上图,每轮训练耗时约15秒,整个程序运行总共耗时208.5秒,测试准确度达到了0.9893。
7、Spyder的问题
最后,博主发现.theanorc.txt文件中配置为GPU模式后,打开Anaconda下的python IDE —— Spyder时会奇慢无比,cpu、内存占用很高,打开后ipython内核启动还会失败。若移除.theanorc.txt或者重命名后,可以正常打开Spyder。原因并不清楚,但是打开Spyder时可以先移动.theanorc.txt文件,随后再恢复到原位置。