序
前两天,看书的时候,测试书中的代码。结果,各种报错,更加无语的是Python明明安装了Theano模块,导入模块的时候,还是报错。报错信息如下:
这个是在PyCharm中运行时的报错信息
You can find the C code in this temporary file: c:\users\darker\appdata\local\temp\theano_compilation_error_wdw7zl
Traceback (most recent call last):
File "t.py", line 9, in <module>
import theano
File "D:\Python27\lib\site-packages\theano\__init__.py", line 110, in <module>
from theano.compile import (
File "D:\Python27\lib\site-packages\theano\compile\__init__.py", line 12, in <module>
from theano.compile.mode import *
File "D:\Python27\lib\site-packages\theano\compile\mode.py", line 11, in <module>
import theano.gof.vm
File "D:\Python27\lib\site-packages\theano\gof\vm.py", line 673, in <module>
from . import lazylinker_c
File "D:\Python27\lib\site-packages\theano\gof\lazylinker_c.py", line 127, in <module>
preargs=args)
File "D:\Python27\lib\site-packages\theano\gof\cmodule.py", line 2356, in compile_str
(status, compile_stderr.replace('\n', '. ')))
Exception: Compilation failed (return status=1): C:\Users\Darker\AppData\Local\Theano\compiledir_Windows-10-10.0.10586-AMD64_Family_22_Model_0_Stepping_1_AuthenticAMD-2.7.13-64\lazylinker_ext\mod.cpp:1:0: sorry, unimplemented: 64-bit mode n. ^include <Python.h>
这个是命令行导入模块的报错信息
E:\Projects\Python\20171209>python
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import theano
You can find the C code in this temporary file: c:\users\darker\appdata\local\temp\theano_compilation_error_n7jfos
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Python27\lib\site-packages\theano\__init__.py", line 110, in <module>
from theano.compile import (
File "D:\Python27\lib\site-packages\theano\compile\__init__.py", line 12, in <module>
from theano.compile.mode import *
File "D:\Python27\lib\site-packages\theano\compile\mode.py", line 11, in <module>
import theano.gof.vm
File "D:\Python27\lib\site-packages\theano\gof\vm.py", line 673, in <module>
from . import lazylinker_c
File "D:\Python27\lib\site-packages\theano\gof\lazylinker_c.py", line 127, in <module>
preargs=args)
File "D:\Python27\lib\site-packages\theano\gof\cmodule.py", line 2356, in compile_str
(status, compile_stderr.replace('\n', '. ')))
Exception: Compilation failed (return status=1): C:\Users\Darker\AppData\Local\Theano\compiledir_Windows-10-10.0.10586-AMD64_Family_22_Model_0_Stepping_1_AuthenticAMD-2.7.13-64\lazylinker_ext\mod.cpp:1:0: sorry, unimplemented: 64-bit mode n. ^include <Python.h>
>>>
向度娘和谷哥询问,结果没找到怎么解决方案。于是就顺着潮流,走进Anaconda的怀抱。它里面集成了很多关于python科学计算的第三方库,用起来方便。
安装Anaconda
英文参考文档:http://deeplearning.net/software/theano/install_windows.html
1、下载Anaconda安装包
我的系统是64位的,所以我选择的是包含 Python 2.x 版本的Anaconda,也就是Anaconda2-5.0.1-Windows-x86_64.exe,其大小为499 MB (524,040,968 字节), 下载链接是https://repo.continuum.io/archive/Anaconda2-5.0.1-Windows-x86_64.exe。
2、移除Python环境变量
网上很多都是把之前的Python卸载,我感觉不需要,把相关的Python的环境变量删除就可以了。例如:我的Python安装到D盘的根目录,我只需要把环境变量中的Python变量删除就可以了,等需要的时候,添上就又可以运行了。
3、安装Anaconda
需要注意的是安装位置的剩余空间应该至少有3GB,因为安装的时候,临时文件释放到安装的目录中,再加上安装后的2.3GB(我安装的版本的大小)。如果中间空间不足,这就很尴尬,安装会直接中断,然后需要重新安装。安装很耗费时间。我安装的位置是D盘根目录,即 D:\Anaconda2
。之后就是漫长的等待了,我的电脑比较低端,当时安装了应该有1个多小时吧。
4、安装MinGW
打开命令行或者打开刚才安装的Anaconda Prompt,输入conda install mingw libpython
,等待安装完成。之后,MinGW会安装到Anaconda目录下。
5、安装Theano
使用 pip 安装Theano,在命令行中输入 pip install -i https://pypi.douban.com/simple Theano
,这个是借用豆瓣的源,可以加速安装,适用于Python官网网络不好的时候。也可以直接输入pip install Theano
回车。
6、环境变量配置
全部安装好后,一共需要配置下列这些环境变量。
D:\Anaconda2
D:\Anaconda2\Scripts
D:\Anaconda2\Library\bin
D:\Anaconda2\MinGW\bin
D:\Anaconda2\MinGW\x86_64-w64-mingw32\lib
有的文章中写到新建环境变量值,把安装的Theano添加进去。操作步骤(Windows 10):此电脑 -> 系统属性 -> 高级系统设置 -> 环境变量。在系统变量上点击“新建”。
变量名:PYTHONPATH
变量值:D:\Anaconda2\Lib\site-packages\theano (此为我的路径)
另外需要在用户根目录下新建 .theanorc.txt
,按“Win+R”快捷键,然后输入“cmd”回车后的第一个目录就是用户根目录。例如:C:\Users\Darker
,这就是我的用户根目录。下面是.theanorc.txt
文件内容,注意,cxxflags=-ID:\Anaconda2\MinGW 红色部分是你安装的目录。
[global]
openmp=False
[blas]
ldflags=
[gcc]
cxxflags=-ID:\Anaconda2\MinGW
测试代码
用上一篇的文章中的那个代码测试。代码为:
import theano
from theano import tensor
# declare two symbolic floating-point scalars
a = tensor.dscalar()
b = tensor.dscalar()
# create a simple expression
c = a + b
# convert the expression into a callable object that takes(a,b)
# values as input and computes a value for c
f = theano.function([a, b], c)
# bind 1.5 to 'a' 2.5 to 'b' and evaluate 'c'
result = f(1.5, 2.5)
print(result)
环境还有有点问题,每次都有这个警告,不过能运行得出结果,说明了Theano配置成功了。
其他
在我的电脑上,比较尴尬的是,我的电脑虽然有GPU芯片,可是,找不到利用的方法,因为我的显卡是AMD的,俗称A卡。如果显卡是NVIDIA的,就可以利用CUDA,来使用GPU进行加速。因为CUDA是NVIDIA公司开发的。
GPU加速效果是很明显的。借用 http://lib.csdn.net/article/aiframework/51297 的一段文字。
利用Theano框架构建一个深度网络,其层次结构为:Layers = [784, 1050, 4901, 500, 10];训练配置:Input_Layer =784,Out_Put = 10,Batch_Size = 500,Epoch = 150,网络每一层详细训练速度对比如表2所示。
训练类型 |
层次 |
无GPU加速(单位:分钟) |
有GPU加速(单位:分钟) |
加速比(单位:倍) |
预训练(Pre-training) |
1050 |
55.5 |
3.8 |
14.6 |
4901 |
196.7 |
8.1 |
24.3 |
|
500 |
252.8 |
19.6 |
12.9 |
|
全局调优(Finetunning) |
[784, 1050, 4901, 500, 10] |
182.1 |
6.3 |
28.9 |
总耗时间 |
687.1 |
37 |
18.6 |
表2 GPU加速对比
可惜,我怎么都用不了。
如有错误,敬请指出,感谢阅读。 —-2017-12-11 16:06:45
一言不发岂能证明我来过了?!