安装Theano
Install Theano
Theano是一个Machine Learning的工具箱,因为和Deep Learning相关,现在非常流行。
这篇文章简单记录一下安装Theano是遇到的问题。
1. import theano出错
>>> import theano
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/net/fantasia/home/zhanxw/python/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg/theano/__init__.py", line 76, in <module>
import theano.tests
File "/net/fantasia/home/zhanxw/python/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg/theano/tests/__init__.py", line 6, in <module>
import unittest_tools
File "/net/fantasia/home/zhanxw/python/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg/theano/tests/unittest_tools.py", line 8, in <module>
import theano.tensor as T
File "/net/fantasia/home/zhanxw/python/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg/theano/tensor/__init__.py", line 10, in <module>
import blas
File "/net/fantasia/home/zhanxw/python/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg/theano/tensor/blas.py", line 393, in <module>
StrParam(default_blas_ldflags()))
File "/net/fantasia/home/zhanxw/python/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg/theano/tensor/blas.py", line 332, in default_blas_ldflags
blas_info = numpy.distutils.__config__.blas_opt_info
AttributeError: 'module' object has no attribute '__config__'
加入下面几行可以解决问题:
import numpy
import numpy.distutils
import numpy.distutils.__config__
2.Theano无法编译
运行示例程序是遇到编译错误:
Traceback (most recent call last):
File "logistic_sgd.py", line 373, in <module>
sgd_optimization_mnist()
File "logistic_sgd.py", line 271, in sgd_optimization_mnist
y: test_set_y[index * batch_size: (index + 1) * batch_size]})
...
File "/net/fantasia/home/zhanxw/python/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg/theano/gof/cmodule.py", line 1641, in compile_str
return dlimport(lib_filename)
File "/net/fantasia/home/zhanxw/python/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg/theano/gof/cmodule.py", line 263, in dlimport
rval = __import__(module_name, {}, {}, [module_name])
ImportError: ('/net/fantasia/home/zhanxw/.theano/compiledir_Linux-3.4.61-x86_64-with-debian-wheezy-sid-x86_64-2.7.5/tmphSYif1/baf8a6fdee34b135ea9110785e356489.so: undefined symbol: ATL_dptsyrk', '[_dot22(<TensorType(float64, matrix)>, W)]')
这里的提示信息是找不到ATL_dptsyrk函数。在没有管理员权限的服务器上,Theano找不到合适的ATLAS函数库。
解决方法是加入以下几行到 $HOME/.theanorc
[blas]
ldflags = -lf77blas -latlas -lgfortran
对于其他错误来讲,还有一些更一般的解决方法。
1. 可以打开Theano的日志信息,比如在程序中加入这两行:
import logging |
#logging.getLogger("theano.gof.cmodule").setLevel(logging.DEBUG)
Theano在运行是可以输出更多的信息。
2. 保留临时文件
可以在 $HOME/.theanorc 中加入以下两行
[global]
nocleanup = False
这样可以保留Theano编译过程中的临时文件,便于调试。
题外话
在有管理员权限的Ubuntu系统, 可以用OpenBLAS来代替ATLAS,因为OpenBLAS是多线程的,而且速度更快。具体可以参考Theano 的手册。
现在Theano可以正常使用,希望接下来几篇blog有空能写写学习Deep Learning的心得。