我正在尝试运行此代码:
x_set = np.random.rand(100,100,100)
x = T.dtensor3('x')
inp = x.reshape((100, 1, 100, 100))
W_stdDev = np.sqrt(2. / (3 * 3 * 2))
W = theano.shared(
np.asarray(
np.random.normal(loc=.0, scale=W_stdDev, size=(3,1,3,3)),
dtype=theano.config.floatX
),
borrow=True
)
conv_out = conv2d(
input=inp,
filters=W,
filter_shape=(3,1,3,3),
)
train_model = theano.function(
inputs=[x],
outputs=conv_out,
)
print(train_model(x_set))
但收到错误:
AssertionError:AbstractConv2d Theano优化失败:没有 可用的实现支持所请求的选项。你是否 排除" conv_dnn"和" conv_gemm"来自优化器?如果在GPU上, 是cuDNN可用,GPU支持吗?如果在CPU上,你有吗? 一个BLAS库安装Theano可以链接?
我正在使用Windows 10 64位和Anaconda 4.1.1安装:
python 3.4.5; numpy 1.11.1; theano 0.9.0.dev2; mkl 11.3.3; mkl-service 1.1.2;
我试图找出如何将theano链接到mkl但是卡住了。因为numpy.show_config()表示:
blas_opt_info:
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['C:\\Minonda\\envs\\_build\\Library\\include']
libraries = ['mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
library_dirs = ['C:\\Minonda\\envs\\_build\\Library\\lib']
openblas_lapack_info:
NOT AVAILABLE
lapack_mkl_info:
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['C:\\Minonda\\envs\\_build\\Library\\include']
libraries = ['mkl_lapack95_lp64', 'mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
library_dirs = ['C:\\Minonda\\envs\\_build\\Library\\lib']
mkl_info:
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['C:\\Minonda\\envs\\_build\\Library\\include']
libraries = ['mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
library_dirs = ['C:\\Minonda\\envs\\_build\\Library\\lib']
lapack_opt_info:
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['C:\\Minonda\\envs\\_build\\Library\\include']
libraries = ['mkl_lapack95_lp64', 'mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
library_dirs = ['C:\\Minonda\\envs\\_build\\Library\\lib']
blas_mkl_info:
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['C:\\Minonda\\envs\\_build\\Library\\include']
libraries = ['mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
library_dirs = ['C:\\Minonda\\envs\\_build\\Library\\lib']
但路径' C:\ Minonda \ envs \ _build \ Library \ lib'在我的系统上不存在。
我还尝试在C:\ Anaconda \ pkgs中找到mkl安装,但是只有一个mkl-11.3.3-1.tar.bz2文件。
我还单独安装了英特尔MKL并尝试添加
[blas]
ldflags = -LC:\Program Files(x86)\IntelSWTools\compilers_and_libraries_2016.3.207\windows\mkl\include
到我的theanorc.txt,导致错误:
ValueError :('编译节点时发生以下错误',CorrMM {有效,(1,1),(1,1)}(InplaceDimShuffle {0,x,1,2}。 0,Elemwise {Cast {float64}}。0),' \ n','无效令牌"文件"在ldflags_str:" -LC:\ Program Files (86)\ IntelSWTools \ compilers_and_libraries_2016.3.207 \ Windows \ MKL \包括"&#39)
我如何正确地将anaconda mkl或intel mkl链接到我的theano?
答案 0 :(得分:0)
是的,theano无法处理文件路径中的空格...程序文件
(x86)
我试图在各处找到关于如何逃避太空角色的答案,我无法做到。最后,我找到了符号链接,它创建了某种指向另一个目录的目录。
cmd
。 mklink /D "C:\LinkToProgramFilesX86" "C:\Program Files (x86)"
(或您想要链接的任何其他名称,但请确保您不会添加任何空格,大声笑)这将创建链接,您将能够在Windows资源管理器中看到这个新目录,就好像它是一个快捷方式,但作为一个实际的文件夹。
然后将其添加到[blas]配置中:
ldflags = -L"C:\LinkToProgramFilesX86\IntelSWTools\compilers_and_libraries_2016.3.207\windows\mkl\include"
不确定它是否是正确的目录,但它确实解决了空间问题。就我而言,我用过:
-L"C:/LinkToProgramFilesX86/IntelSWTools/compilers_and_libraries_2017/windows/mkl/lib/intel64_win" -lmkl_lapack95_lp64 -lmkl_blas95_lp64 -lmkl_rt -lm -lm
......用双引号。
现在,因为生活并不容易,所以出现了一个新问题:我们没有在我们用于blas的库的library_dir中找到动态库。
我解决了转到numpy安装目录,并在文件__config__.py
中更改相同的内容。 (将所有Program Files (x86)
替换为新链接LinkToProgramFilesX86
)
在此之后消息停止显示:)