win10 搭建theano0.7实现神经网络训练GPU加速

目前theano已经更新到1.x的版本,但是最近在实现一个车牌号识别的课程项目时发现:http://neuralnetworksanddeeplearning.com 这个课程中利用CNN进行书写数字识别识别是代码采用老版本的theano0.7实现。


win10 搭建theano0.7实现神经网络训练GPU加速_第1张图片
Neural Networks and Deep Learning Code Samples

目前的文档给出的方法只能安装最新版本的theano,因此通过这篇文章记录下安装theano0.7的过程并记录下遇到的一些列问题。

安装前准备:

查找的文档中theano0.7大多使用的cuda版本是cuda7.5,不知道对最新的cuda支持怎么样,这个没有尝试。另外需要相应的vs环境用于编译。


win10 搭建theano0.7实现神经网络训练GPU加速_第2张图片
Compatibility of CUDA 7.5

安装visual studio 2013/community 2013 和 CUDA7.5:

安装CUDA7.5时出现Visual Studio Integration 安装失败,因为之前已经安装了CUDA8.0卸载完后还是存在冲突导致无法安装CUDA7.5,可以参考如下链接:

https://blog.csdn.net/zzpong/article/details/80282814

https://www.zhihu.com/question/276491276/answer/392652876

安装配置完添加CUDA的环境变量(大多数情况下会自动添加),用vs打开编译CUDA的deviceQuery sample 能否运行并找到设备,或者测试nvcc -v 命令是否有效。

1.安装Anaconda和需要的python包:

Anaconda提供了虚拟的python环境,与系统本身的并不冲突,可以把系统安装Python命名为python2,python3, Anaconda依旧使用python。

2. 配置清华镜像,当然大多数教程包括官网的教程都会是下面两行代码:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda 

config --set show_channel_urls yes

我建议大家可以加上他们新推出的msys2第三方通道,代码如下:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/

安装所有需要的包:

conda install numpy scipy mkl-service libpython m2w64-toolchain nose

3. 安装theano和pygpu,这一步比较关键,因为需要安装老版本的theano 0.7, 直接使用conda install theano pygpu命令的话安装的是最新版的theano。

用pip安装theano0.7

pip install Theano==0.7.0

安装pygpu0.6.8, 更早的应该兼容theano0.7但是已经无法通过conda安装了,较新的版本会出现支持错误。

conda install pygpu=0.6.8

至此安装完成,下面列举下安装中可能出现的问题:

1. WARNING (theano.tensor.blas): Using NumPy C-API based implementation for BLAS functions.

这个waring导致后面无法启用gpu加速,原因可能是因为安装numpy和mkl-service,blas等模块时出现的问题,我的解决方案是重装了整个andaconda,按上面的流程重新安装这些包,问题解决。因为第一次安装的时候比较乱,可能哪里的操作出现了问题。

2. WARNING (theano.configdefaults): g++ not detected ! Theano will be unable to execute optimized C-implementations (for both CPU and GPU) and will default to Python implementations. The performance will be severely degraded. To remove this warning, set Theano flags cxx to an empty string.

这个可能是之前安装的migw版本不兼容,解决方式是重新安装mingw。

conda install mingw

3. ERROR (theano.gpuarray): Could not initialize pygpu, support disabled

这个问题有两个原因,第一个是pygpu版本和theano0.7不兼容,通过安装低版本的pygpu0.6.8解决, 安装正确版本后发现还是出现这个问题;第二个原因是要按照theano0.7的方式配置.theanorc.txt,否则pygpu找不到设备!

配置如下:

[global]

floatX = float32 

device = gpu0    (新版本的配置要求这里是CUDA,会导致无法找到device, 因此出现上面的错误!)

[blas]

ldflags=

[nvcc] 

flags=-LF:\Anaconda2\libs 

compiler_bindir=C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin

其他环境变量和详细配置可以参考:

https://blog.csdn.net/stormragewang/article/details/51261465

https://zhuanlan.zhihu.com/p/26473699

另外非常感谢前辈提供的经验,终于把老版本的theano配置成功了!

新版本的theano安装官方文档来一步步即可,可能CUDA和vs需要采用最新的版本,另外直接使用conda install theano pygpu即可!

在pycharm中运行需要在.theanorc.txt中添加gcc的配置如下:

[global]

floatX = float32 

device = gpu0

cxx=-LF:\Anaconda2\MinGW\bin\g++.exe

[nvcc] 

flags=-LF:\Anaconda2\libs 

compiler_bindir=C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin

[gcc]

cxxflags=-LF:\Anaconda2\MinGW\x86_64-w64-mingw32\include -LF:\Anaconda2\MinGW\x86_64-w64-mingw32\lib

[blas]

ldflags=

通过scripts运行不需要上述配置也能检测到g++ compiler,mingw之前通过Anaconda安装,意味着在Anaconda中已经配置好了。

你可能感兴趣的:(win10 搭建theano0.7实现神经网络训练GPU加速)