我使用WinPython-64bit-3.5.1.1和Theano。导入Theano工作,我甚至可以训练一个反复出现的神经网络。但是,当我尝试使用卷积神经网络时,我收到以下错误:
[...] mod.cpp:528:未定义引用`dgemm _' \ r。[...]
我认为某些库丢失/不可用于我的CPU,但我无法弄清楚如何解决这个问题。你能告诉我你需要哪些信息来帮助我调试这个并最终解决这个问题吗?
例如,此代码(from a kaggle forum)可以正常工作:
import numpy as np
import time
import theano
print('blas.ldflags=', theano.config.blas.ldflags)
A = np.random.rand(1000, 10000).astype(theano.config.floatX)
B = np.random.rand(10000, 1000).astype(theano.config.floatX)
np_start = time.time()
AB = A.dot(B)
np_end = time.time()
X, Y = theano.tensor.matrices('XY')
mf = theano.function([X, Y], X.dot(Y))
t_start = time.time()
tAB = mf(A, B)
t_end = time.time()
print("NP time: %f[s], theano time: %f[s] (times should be close when run on CPU!)" % (
np_end - np_start, t_end - t_start))
print("Result difference: %f" % (np.abs(AB - tAB).max(), ))
输出:
blas.ldflags=
NP time: 0.452026[s], theano time: 0.491028[s] (times should be close when run on CPU!)
Result difference: 0.000000
我也收到错误,每次我导入theano但它从未阻止我的复发神经网络工作。这是错误:
1 #define _CUDA_NDARRAY_C
2
3 #include <Python.h>
4 #include <structmember.h>
5 #include "theano_mod_helper.h"
6
7 #include <numpy/arrayobject.h>
8 #include <iostream>
9
10 #include "cuda_ndarray.cuh"
11
[...]
5327
5328 /*
5329 Local Variables:
5330 mode:c++
5331 c-basic-offset:4
5332 c-file-style:"stroustrup"
5333 indent-tabs-mode:nil
5334 fill-column:79
5335 End:
5336 */
5337 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=79 :
5338
===============================
nvcc : fatal error : nvcc cannot find a supported version of Microsoft Visual Studio. Only the versions 2008, 2010, and 2012 are supported
ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: ('nvcc return status', 4294967295, 'for cmd', 'nvcc -shared -O3 -Xlinker /DEBUG -D HAVE_ROUND -m64 -Xcompiler -DCUDA_NDARRAY_CUH=mc72d035fdf91890f3b36710688069b2e,-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,/Zi,/MD -IC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64\\lib\\site-packages\\theano\\sandbox\\cuda -IC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64\\lib\\site-packages\\numpy\\core\\include -IC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64\\include -IC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64\\lib\\site-packages\\theano\\gof -o C:\\Users\\user\\AppData\\Local\\Theano\\compiledir_Windows-7-6.1.7601-SP1-Intel64_Family_6_Model_58_Stepping_9_GenuineIntel-3.5.1-64\\cuda_ndarray\\cuda_ndarray.pyd mod.cu -LC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64\\libs -LC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64 -lpython35 -lcublas -lcudart')
['nvcc', '-shared', '-O3', '-Xlinker', '/DEBUG', '-D HAVE_ROUND', '-m64', '-Xcompiler', '-DCUDA_NDARRAY_CUH=mc72d035fdf91890f3b36710688069b2e,-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,/Zi,/MD', '-IC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64\\lib\\site-packages\\theano\\sandbox\\cuda', '-IC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64\\lib\\site-packages\\numpy\\core\\include', '-IC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64\\include', '-IC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64\\lib\\site-packages\\theano\\gof', '-o', 'C:\\Users\\user\\AppData\\Local\\Theano\\compiledir_Windows-7-6.1.7601-SP1-Intel64_Family_6_Model_58_Stepping_9_GenuineIntel-3.5.1-64\\cuda_ndarray\\cuda_ndarray.pyd', 'mod.cu', '-LC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64\\libs', '-LC:\\WinPython-64bit-3.5.1.1\\python-3.5.1.amd64', '-lpython35', '-lcublas', '-lcudart']
我发现this线程谈论同样的问题,但它只链接到另一个网站。我可以遵循这些说明,但他们假设我不使用WinPython,从一开始就安装所有内容。这是唯一的方法吗?
答案 0 :(得分:0)
我对空的theano.config.blas.ldflags感到好奇。文档声明默认为-lblas和dgemm_是一个BLAS的东西。尝试安装blas并设置此变量。 例如。对于MKL: