Theano与Lasagne
1. Anaconda安装
2. copy theano 目录到 path/to/Anaconda/Lib/site-package 目录下
3. 进入Conda prompt:
12345678
conda create -n python34 python=3.4.4activate python34cd C:/Program Files/Anaconda2/envs/python34/Scriptsconda install mingwconda install libpython -n python34conda install scipyconda install noseconda install theano
4. 检查下mingw的目录是否在环境变量中:
path:C:\Program Files\Anaconda2\envs\python34\MinGW\bin
C:\Program Files\Anaconda2\envs\python34\MinGW\x86_64-w64-mingw32\lib
这个目录与攻略中略有不同,因为我们通过anaconda安装的mingw在python34目录下
PYTHONPATH:C:\Program Files\Anaconda2\Lib\site-packages\theano
5. 安装VS2015
在VizDoom的编译中是必须的,而且CUDA安装时同样需要VS2015.
6. 安装CUDA
在安装cuda之前最好先安装DirectX,而在安装DirectX的过程中可能会遇到S1023错误,这是因为和之前安装的旧版本冲突了,所以先在控制面板中卸载Microsoft Visual C++ 2010 x86/x64 Redistributable,再重新安装就好了。
cuda-8.0 for windows 64bit + visual studio 2015,实际上最终安装的版本是cuda 7.5+vs2010,下面将看到这个折腾的过程。
基本上按照here的顺序就可以,但是在测试cuda是否安装成功和设置cuda目录的时候,都发现sdk目录下好像缺失了些什么,比如没有bandwidthtest和queryDevice两个测试程序。
这里的两个测试程序是需要使用vs自己去编译的,而不是cuda在安装过程中生成的。在上面的安装执行结束后,sdk的安装目录(也就是上面CUDA samples的安装目录)下,会生成vs的sln文件,打开并编译。如果和我一样忘记安装DirectX,在这里编译时就会遇到simpleD3D10工程中有找不到d3dx9.h的错误,此时安装DirectX后设置好include和lib目录就可以了。而笔者是安装DirectX后重新安装CUDA toolkit的,在重新安装的时候还遇到一次黑屏,还好虚惊一场。
测试过程中,bandwidthTest和deviceQuery都得到“设备无法被弹出或拔出”的错误提示,所以重新查找并安装了显卡驱动。
|
|
后来重装系统并安装驱动353.90后cuda 7.5版本可用,而使用相同的驱动如果是cuda 8.0则会被提示驱动版本insufficient的问题,至此可以说,8.0+vs2015的搭配在我的笔记本上是失败的,所以最终只能选择7.5了。最后不死心地在另一名同事的机器上尝试了8.0+vs2015 community的搭配,成功了,这很让我费解。他的机器是GeForce GT 720M显卡,我的是GeForce 940M显卡,所以如果你是720就大胆地去用8.0吧,否则7.5的成功概率高多了。如果有人知道根本原因或者解决方案,请务必赐教于我。
7. 配置theano路径
进入C盘下当前用户的路径,我的是在C:\Users\Administrator
新建文件.theanorc.txt:
8. 使用test.py与using_gpu.py测试theano安装情况
出现的第一个错误:undefined reference to __imp_pyexc_typeerror
这个PyExc_TypeError出现在mod.cpp中。经过查找居然是没有安装libpython的原因,检查安装了哪些可以通过conda list查询。虽然上面我明明执行过conda install libpython的操作,但是的确重新执行一次就不会有这个错误了,所以遇到类似错误可以查看conda list 是不是安装了libpython。在安装后一定要重新安装theano,并且在path中添加下cuda toolkit的bin目录,否则又会进入到下面的错误中。
出现的第二个错误:importerror the following error happened while compiling node
出现的第三个错误:找不到cl.exe
需要把C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin目录添加到path目录,cl就在这个目录下。
之后就可以看到正常的测试情况了。
9. 安装OpenBlas
如果用check_blas.py测试可以看到现在的theano并没有使用blas,而是numpy。这里使用的是win7 64bit下编译好的OpenBlas,直接添加在相关路径下。
把mingw64_dll.zip 下的三个dll和OpenBLAS-v0.2.15-Win64-int32.zip下的libopenblas.dll copy到C:\Program Files\Anaconda2\envs\python27\MinGW\bin目录下,当然只要在path目录中就可以,我觉得这里比较合适。
然后在.theanorc.txt中添加如下配置项:[blas]
ldflags=-lopenblas
[gcc]
cxxflags=-IC:\openblas\include -LC:\openblas\lib
这里openblas就是解压后的OpenBLAS-v0.2.15-Win64-int32.zip路径。
再次执行check_blas.py的时候可以看到最后,这表明blas安装成功了,而之前是without direct Theano binding to blas …… to numpy……
10. 安装Lasagne
在anaconda prompt中进入envs/python27/Scripts目录,
之后可以尝试
|
|
将会下载数据并执行mnist任务,返回5次epoch的训练结果。
如果需要cuCNN,请参见here
至此,theano和lasagne的安装已经完成了。接下来是要编译VizDoom了。
VizDoom
VizDoom的编译惨遭Doom的编译过程,请严格执行如下tutorial
有几个点尤其要注意:
- 一定用vs2015,虽然说是支持vs2012
- cmake配置工程项的时候,如果不需要JAVA支持(我使用python binding)尽量就不要选了;而其中有些zlib等要选择inner编译
我直接copy了在另一个机器上(同样为win7 64bit)的编译结果,如果真的懒得安装那么多东西,可以直接copy我编译的结果。