win7+cuda8.0+cuDNN v5+theano0.8.2+Python2.7安装记录

写在前面:

为了学习Ma Jing博士的Detect Rumors on Twitter by Promoting Information Campaigns with Generative Adversarial Learning这篇文章,以及运行源码https://github.com/majingCUHK/Rumor_GAN,陷入配环境的大坑中,代码还没跑环境先把自己配到信心都莫得了……耗时4天,退堂鼓顶级选手差点就放弃了,好在现在貌似已经配好环境,代码也在运行了……

 

安装anaconda和cuda8.0,以及对应版本的cudnn

cuda下载https://developer.nvidia.com/cuda-toolkit-archive

cudnn下载https://developer.nvidia.com/rdp/cudnn-archive

建议不改路径,运行nvcc -V返回版本,安装cudnn,只需要将对应文件夹内容复制到对应cuda文件夹中,完成后cd到cuda安装目录下的 ...\extras\demo_suite,运行deviceQuery.exe返回result=Pass就说明安装成功

因为我的目的是运行源码,根据源码的Dependencies锁定:

numpy version 1.11.2

theano version 0.8.2

根据源码语法锁定:

python 2.7

坑:第一天没注意到theano官方文档中:http://deeplearning.net/software/theano/install_windows.html#install-windows

Python == 2.7* or ( >= 3.4 and < 3.6 )

我的win7电脑上本来就安装了Anaconda3并且是python3.6.5,绕了许多弯路,解决方法是

conda create -n py27 python=2.7
activate py27

若出现CondaHTTPError:

一般解决方案:

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

一般情况下这样就能解决问题了,但是我不行,添加了无数清华镜像地址,于是我的用户home目录下的.condarc文件最后长得是这样的

二般解决方案:

channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - soumith
show_channel_urls: true
offline: false

然而我还是不行……听说有种玄学叫离线下载,于是我又试了试

conda config --set offline true

还是不行……但是我再执行:

conda config --set offline false

之后就成功了……可能是玄学……

第二步安装mingw libpython

conda install mingw libpython

安装对应版本numpy theano nose_parameterized(这个不装会报错)

pip install numpy==1.11.2
pip install theano==0.8.2
pip install nose_parameterized

设置theano路径文件,在用户目录home下创建.theanorc.txt(global这边我少设一个都会出问题qaq我太难了,找了好多教程才拼出来)

[global]
floatX = float32
device = cpu
openmp=False
[blas]
Idflags=
[gcc]
cxxflags = -IC:\ProgramData\Anaconda3\MinGW\x86_64-w64-mingw32\include

然后就要到python里头一探究竟了

python
import theano
theano.test()

总之很久很久之后会出结果,我大概跑了两个半小时出来说没有错误。也可以试试这个test.py:

from theano import function, config, shared, tensor
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([], tensor.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, tensor.Elemwise) and
              ('Gpu' not in type(x.op).__name__)
              for x in f.maker.fgraph.toposort()]):
    print('Used the cpu')
else:
    print('Used the gpu')

输出used the cpu就可。

然后在安装好cuda cudnn之后可以把之前的.theanorc.txt文件改成:

[global]
floatX = float32
device = gpu
openmp = False
allow_input_downcast=True
[blas]
ldflags=
[gcc]
cxxflags = -IC:\ProgramData\Anaconda3\MinGW\x86_64-w64-mingw32\include
[nvcc]
flags = -LC:\ProgramData\Anaconda3\envs\py27\libs
fastmath = True
compiler_bindir = D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64

然后再运行以上test.py代码就行,输出used the gpu就行。

期间我还经历了用电脑上装的cuda9.2+cudnn7.6.5尝试,报了一堆错误信息中,找到个提示信息,大概是说要么升级更新theano,要么降级cudnn到version 5。那我心想我降级吧,结果一看cudnn v5居然只能和cuda8.0配合使用,经历了一番卸载cuda9.2,(打开控制面板里的卸载程序,后缀带9.2都卸载了,具体注意事项请参考其他教程)感觉自己是挑了一条坑最多的路走了一圈,有一些细节没写明之后会补充,最后附上凌晨四点配出环境的喜悦,感谢之前各位探路采坑的前辈们~

展开阅读全文
©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读