【发布时间】:2017-05-13 08:40:53
【问题描述】:
问题是我无法导入theano。我知道关于同一问题还有其他几个问题,但没有一个对我有用,通常它们要么使用旧版本,要么使用不同的操作系统。几天来,我一直在尝试解决此问题,并且尝试了所有可以找到的解决方法和技巧,因此除了在这里询问之外,我想不出其他可以尝试的方法。
如果我在不使用 sudo 的情况下尝试 python3 -c "import theano",我会得到以下信息:
ERROR (theano.gpuarray): Could not initialize pygpu, support disabled
Traceback (most recent call last):
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 164, in <module>
use(config.device)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 151, in use
init_dev(device)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 68, in init_dev
context.cudnn_handle = dnn._make_handle(context)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/dnn.py", line 86, in _make_handle
raise RuntimeError("error creating cudnn handle")
RuntimeError: error creating cudnn handle
使用 sudo 我得到
ERROR (theano.gpuarray): Could not initialize pygpu, support disabled
Traceback (most recent call last):
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 164, in <module>
use(config.device)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 151, in use
init_dev(device)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 66, in init_dev
avail = dnn.dnn_available(name)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/dnn.py", line 175, in dnn_available
if not dnn_present():
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/dnn.py", line 158, in dnn_present
dnn_present.avail, dnn_present.msg = _dnn_check_version()
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/dnn.py", line 131, in _dnn_check_version
v = version()
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/dnn.py", line 339, in version
profile=False)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/compile/function.py", line 326, in function
output_keys=output_keys)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/compile/pfunc.py", line 486, in pfunc
output_keys=output_keys)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/compile/function_module.py", line 1795, in orig_function
defaults)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/compile/function_module.py", line 1661, in create
input_storage=input_storage_lists, storage_map=storage_map)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/link.py", line 699, in make_thunk
storage_map=storage_map)[:3]
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/vm.py", line 1047, in make_all
impl=impl))
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/op.py", line 935, in make_thunk
no_recycling)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/op.py", line 839, in make_c_thunk
output_storage=node_output_storage)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cc.py", line 1190, in make_thunk
keep_lock=keep_lock)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cc.py", line 1131, in __compile__
keep_lock=keep_lock)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cc.py", line 1586, in cthunk_factory
key=key, lnk=self, keep_lock=keep_lock)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cmodule.py", line 1159, in module_from_key
module = lnk.compile_cmodule(location)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cc.py", line 1489, in compile_cmodule
preargs=preargs)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cmodule.py", line 2325, in compile_str
return dlimport(lib_filename)
File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cmodule.py", line 302, in dlimport
rval = __import__(module_name, {}, {}, [module_name])
ImportError: dlopen(/Users/np/.theano/compiledir_Darwin-16.5.0-x86_64-i386-64bit-i386-3.6.1-64/tmp3r02thlc/m3d1cf20adb1014f04986e6a344a55bde.so, 2): Library not loaded: @rpath/libcudnn.6.dylib
Referenced from: /Users/np/.theano/compiledir_Darwin-16.5.0-x86_64-i386-64bit-i386-3.6.1-64/tmp3r02thlc/m3d1cf20adb1014f04986e6a344a55bde.so
Reason: image not found
我知道这是动态链接的问题,但我不知道为什么它不起作用。
我尝试了以下方法:
- 禁用 SIP
- 现在大概重新安装了 CUDA 和 cudnn 大约 10 次
- cudnn 文件在
/Developer/NVIDIA/CUDA-8.0/lib和/usr/local/cuda/lib中
- cudnn 文件在
- 现在重新安装了大约 10 次 python、conda、theano、pygpu
- 从头开始编译 libgpuarray
- 重新启动几次以确保不是那样
- 执行
update_dyld_shared_cache看看是否是缓存问题 - 尝试将带有 install_name_tool 的 libcudnn.6.dylib 链接到 pygpu .so,但没有执行任何操作
这是我的 .zshrc 路径:
export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:/usr/local/cuda/extras/CUPTI/lib
export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH
export PATH=$CUDA_HOME/bi:$DYLD_LIBRARY_PATH:$PATH
.theanorc
[global]
floatX = float32
device = cuda
force_device = True
allow_gc = False
optimizer_including=cudnn
[cuda]
root = /usr/local/cuda
[dnn]
enabled = True
include_path=/usr/local/cuda/include
library_path=/usr/local/cuda/lib
版本号:
- macOS 10.12.4
- CUDA 8.0 和 cudnn 6.0
- Python 3.6.1
- Theano 0.9.0
- libgpuarray 0.6.4
- pygpu 0.6.4
【问题讨论】:
标签: python theano theano-cuda