Win10环境下安装theano并配置GPU详细教程
一.软件和环境
(1)安装日期2016/12/23;
(2)原材料VS2013,cuda-8.0(最好下载cuda7.5,目前theano-0.8.2对cuda-8支持不是很好),Anaconda3-4.2.0(64位);
(3)环境为win10.
二.安装步骤
(1)安装VS2013。这个没什么可说的,下载64位版本后就是一路下一步、确定就行,记住安装位置就可以了,我这里的安装目录是D:\software\VS2013:
接着右键我的电脑-》属性-》高级系统设置-》环境变量,之后编辑系统变量Path,加入两个路径D:\software\VS2013\VC\bin和D:\software\VS2013\Common7\IDE,以分号隔开,如图:
点击确定即可。
(2)安装cuda。这个也没什么可说的,到官网上下载cuda,并一路下一步+确定就好了,注意如果安装过程中win10提示阻止某项操作,一定要选择允许本次操作或允许程序所有操作,否则cuda就会安装失败。Cuda官网地址为
http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/#axzz46v2MC6l8,
下载地址为https://developer.nvidia.com/cuda-downloads,
如图:
(注意:这是cuda-8版本,对目前版本的theano支持不是很好,不过不影响使用,最好还是下载cuda7.5,我这里懒得再重装一遍,所以就用的cuda-8)
还有一定要记住cuda的安装路径,我的路径就是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0,如图:
(3)右键我的电脑-》属性-》高级系统设置-》环境变量,可以看到系统变量中增加了两个变量CUDA_PATH和CUDA_PATH_V8_0,如图:
之后编辑系统变量Path,加入两个路径%CUDA_PATH%\lib\x64和%CUDA_PATH%\bin,要用分号隔开,如图:
点击确定。
打开命令行,输入nvcc -V,如果出现下图则安装成功:
并可到目录C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\1_Utilities\deviceQuery下用VS2013打开并运行测试样例deviceQuery_vs2013.vcxproj文件,如图:(注意C:\ProgramData为隐藏文件夹,需要点击C盘-》查看-》选项-》查看,选中显示隐藏的文件、文件夹和驱动器,点击确定。如图)
图为显示C:\ProgramData文件夹的查看选项
图为deviceQuery_vs2013.vcxproj的位置
图为在VS2013中的运行结果
最后一行为Result = Pass则表示安装配置成功。
(4)安装Anaconda3-4.2.0,这个很简单,就是一路确定即可,记住安装位置,如我就是安装在D:\software\Anaconda3,如图:
接着右键我的电脑-》属性-》高级系统设置-》环境变量,在用户变量中添加PATH,并加入路径D:\software\Anaconda3,D:\software\Anaconda3\Scripts和D:\software\Anaconda3\Library\bin,点击确定。如图:
之后进入命令行输入python,如果出现如图信息,则安装成功:
关闭命令行。
(5)安装mingw和libpython。打开命令行后输入conda install mingw libpython即可,目前libpython已经支持python3.5了,就不用再配置python3.4的环境了。注意如果安装mingw速度很慢,则可ctl+c并退出命令行,再进入命令行修改Anaconda的镜像,这里推荐清华的镜像,方法为在命令行中输入:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
,之后再conda install mingw libpython即可。
之后到Anaconda3的安装目录中可以看到MinGW的文件夹,如图:
(注:网上说需要把MinGW的路径加入到环境变量,其实不用,等会儿再theano的配置文件中标出MinGW的位置即可)
(6)安装theano。首先打开命令行,输入conda install scipy,之后再输入pip install theano即可。(为什么要输入conda install scipy我也不明白,但是网上建议)。之后在个人主文件夹下新建一个“.theanorc.txt”的文档。个人主文件夹就是打开命令行后所显示的文件夹路径,比如我的就是C:\Users\15540:
注意theano的配置文件为.theanorc.txt,注意前面那个点要有,并且文件名为.theanorc,.txt是文件类型,不要弄错。打开.theanorc.txt写入以下信息:
[global]
openmp=False
device = gpu
optimizer_including=cudnn
floatX = float32
allow_input_downcast=True
[lib]
cnmem = 0.8
[blas]
ldflags=
[gcc]
cxxflags=-ID:\software\Anaconda3\MinGW
[nvcc]
flags = -LD:\software\Anaconda3\libs
compiler_bindir = D:\software\VS2013\VC\bin
fastmath = True
注意需要把cxxflags=-ID:\software\Anaconda3\MinGW换成你的Anaconda3中MinGW的位置,flags = -LD:\software\Anaconda3\libs换为你的Anaconda3中libs的位置,compiler_bindir = D:\software\VS2013\VC\bin换为你的VS2013中VC\bin的位置;还有cnmem = 0.8这个网上说设为1,但是貌似有点问题,建议设为小于1的值,如我这里设为0.8 ,这就可以避免后面显示CNMEM is disabled了。
(7)更新cudnn文件,到网上搜索cudnn下载下来(到官网注册一下就可以下载了,官网网址为https://developer.nvidia.com/cudnn)。将下载来的文件解压,解压出cuda文件夹,里面包含3个文件夹,如图。将设三个文件夹替换掉系统里面的对应文件,进行覆盖替换即可,例如我的文件目录为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0。覆盖掉后面导入theano时会就不会出现CuDNN not available提示了。
(8)测试theano。打开命令行,输入python,在输入import theano,如果出现UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 11: invalid continuation byte这种编码问题,这是因为掉用nvcc返回的字符串是使用的cwindows默认的默认编码,直接找到theano中对应的报错文件,把源码出错的地方改为 *.decode("GBK")就可以。比如我的是在theano下的__init__.py出现的编码问题,则修改为:
(如果出现上述错误,关闭命令行修改错误,重输一遍命令即可)出现以下画面则表示成功。
(注:可以看到仍有warning,不过不影响使用,出现warning的原因主要是cuda-8对目前版本的theano支持不太好导致,不过相信以后更新的theano会解决这个问题,如果实在接受不了这个warning就安装cuda7.5,步骤一样)
三.其他问题
(1)不要在环境变量添加PYTHONPATH变量,否则容易在import theano后出现configparser找不到或没有这个组件这个问题(在我这里是这样的);
(2)建议在安装完cuda后重启电脑;
(3)如果在命令行输入命令后出现什么问题,建议修改完问题后重启命令行;
(4)如果还有其他问题,试试重启电脑后在import theano,如果还有问题,一般就是配置文件.theanorc.txt的问题(我这个配置方式不一定百分之百的适合你),下面列出一些我参考的文章:
http://blog.csdn.net/u011821462/article/details/50145221
http://blog.csdn.net/stormragewang/article/details/51261465
http://blog.csdn.net/voidfaceless/article/details/53711550