theano.test():因常量折叠导致优化失败(在ubuntu上)

3 投票
1 回答
5624 浏览
提问于 2025-04-18 10:59

在Ubuntu操作系统上运行theano.test()时,会出现一些关于优化失败的错误信息,内容如下:

ERROR (theano.gof.opt): Optimization failure due to: constant_folding

ERROR (theano.gof.opt): TRACEBACK:

ERROR (theano.gof.opt): Traceback (most recent call last):

File "/usr/local/lib/python2.7/dist-packages/theano/gof/opt.py", line 1286, in process_node
replacements = lopt.transform(node)
File "/usr/local/lib/python2.7/dist-packages/theano/tensor/opt.py", line 3996, in constant_folding
no_recycling=[])

File "/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda/__init__.py", line 237, in make_thunk
compute_map, no_recycling)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/op.py", line 606, in make_thunk
output_storage=node_output_storage)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 948, in make_thunk
keep_lock=keep_lock)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 891, in __compile__
keep_lock=keep_lock)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 1322, in cthunk_factory
key=key, fn=self.compile_cmodule_by_step, keep_lock=keep_lock)
File "/usr/local/lib/python2.7/dist-packages/theano/gof/cmodule.py", line 996, in module_from_key
module = next(compile_steps)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 1237, in compile_cmodule_by_step
preargs=preargs)

File "/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda/nvcc_compiler.py", line 444, in compile_str
return dlimport(lib_filename)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/cmodule.py", line 284, in dlimport
rval = __import__(module_name, {}, {}, [module_name])

ImportError: ('/home/csz/.theano/compiledir_Linux-3.11.0-20-generic-x86_64-with-Ubuntu-12.04-precise-x86_64-2.7.3-64/tmpcF2It0/3ea6a99a1a8d1d8523de8d72c27b90f4.so: undefined symbol: _Z25CudaNdarray_CopyFromArrayP11CudaNdarrayP23tagPyArrayObject_fields', '[GpuFromHost(TensorConstant{0.0})]')

有没有人知道怎么解决这个问题,或者到底发生了什么呢?

1 个回答

2

这个问题可能由很多原因引起。错误和你的显卡(GPU)有关。所以首先,确保你能编译nvidia的示例代码,并且它们能够正常运行。这样可以确认这不是问题所在。

问题在于Theano无法导入它编译的一个GPU模块,因为它找不到所需的符号。这个缺失的符号叫做"_Z25CudaNdarray_CopyFromArrayP11CudaNdarrayP23tagPyArrayObject_fields",它在Theano已经预编译好的一个共享库里。

你使用的是什么操作系统?确保将Theano更新到最新的开发版本。最近有一个修复(如果我没记错的话是星期一)可能会解决某些操作系统上的这个问题。

撰写回答