最近在导师介绍下,自学台湾大学Hungyi Lee于2015年录制的Machine Learning and having it deep and structured课程,里面完成作业要求使用theano, 因此必须配置一发python下的theano。
(GPU加速能有效加快代码的运行速度,可以说是磨刀不误砍柴工。)
本机环境
【笔记本】:Thinkpad T470 Signature Edition
【CPU】:Intel i5-7200U
【内存】:8G
【显卡】:Intel HD 620 + NVIDIA GeForce 940MX
【操作系统】:windows10 Build 15063
【已有环境】:Python 2.7+Anaconda2-64bit(用于conda install以及依赖包numpy等);MS Visual Studio 2015(已含C++组件)
参考博客
翻阅了很多博客,精选了这三篇比较靠谱的,鉴于每台机器的配置和环境都有差异,可以将这三篇对比着看~
【最靠谱的博客之首,强烈推荐!】
windows 10 64bit下安装Tensorflow+Keras+VS2015+CUDA… - 简书
【最靠谱的博客之二,列出了安装时可能遇到的坑】
深度学习(二)theano环境搭建 - hjimce的专栏 - CSDN博客
【最靠谱的博客之三,比较精炼】
【python深度学习】theano环境搭建/安装
遇到的问题
安装时报错
走了很多弯路,总结了必须要检查的几点,大家可以在上面博客里的具体步骤里找对应的解决方案。
- 检查点1:所有依赖包的安装、”.theanorc.txt”的设置
- 检查点2:CUDA Toolkit是否支持本机的NIVIDA显卡,以及本机显卡驱动的更新
- 检查点3:VS 2015重新编译CUDA samples,保证没有错误
导入theano包时报错
- 上面的博客里都有提到一些常见的错误,也给出了解决方案,主要还是安装没有彻底完成,尤其是在配置CUDA时候要确保每一步顺利。
nvcc fatal : Cannot find compiler 'cl.exe' in PATH
- 原因是没有完全配置好.theanorc.txt文件中VC的bin目录,解决方法是加入下述文本
- [nvcc]
fastmath=True
flags =-LD:\ProgramData\Anaconda2\libs
compiler_bindir=D:\Program Files (x86)\Visual Studio\VC\bin
运行时报错
用GPU进行浮点数运算时,提示数据类型无法转换到float32,原因可能是在
.theanorc.txt
中指明了floatX = float32
,导致了64位浮点运算舍弃的问题- Cannot convert Type TensorType(float64, matrix) into Type TensorType(float32, matrix)
- 解决方案:直接使用CPU加速,或在变量声明时规定
dtype='float32'
- Cannot convert Type TensorType(float64, matrix) into Type TensorType(float32, matrix)
版本兼容问题
- “WARNING (theano.sandbox.cuda): The cuda backend is deprecated and will be removed in the next release (v0.10). Please switch to the gpuarray backend. ”
- 解决方案:将theano的版本从0.9.0下降到0.8.2,详细步骤见Theano报错:WARNING (theano.sandbox.cuda)