CPU上的Theano CNN:AbstractConv2d Theano优化失败

Jon*_*son 14 python cpu blas neural-network theano

我正在尝试使用CIFAR10数据集训练CNN在图像上进行物体检测,以便在我的大学举办研讨会,但是我得到以下错误:

AssertionError:AbstractConv2d Theano优化失败:没有可用的实现支持所请求的选项.你是否从优化器中排除了"conv_dnn"和"conv_gemm"?如果在GPU上,cuDNN可用并且GPU是否支持它?如果在CPU上,你是否安装了Theano可以链接的BLAS库?

我在Windows 10机器上的Jupyter笔记本(CPU上的CNN培训)中运行Anaconda 2.7.由于我已经使用git clone更新到最新的theano版本,我尝试了以下方法:

  • 直接从代码中排除dnn和gemm THEANO_FLAGS='optimizer_excluding=conv_dnn, optimizer_excluding=conv_gemm'
  • 直接从cmd输入中排除dnn和gemm,THEANO_FLAGS='...' python <myscript>.py这并不令人惊讶地发出"未知命令"错误.
  • 从我放入C:/ user/myusername的.theanorc.txt中排除dnn和gemm

不幸的是,我仍然得到相同的错误,当我调用print(teano.config)术语"conv_dnn"和"conv_gemm"时,不会出现.

  • 此外,我试图找出我的numpy包正在使用什么BLAS(通常效果很好),如果使用来自dependencywalker.com的工具该包是静态的,但我失败了

所以这是我的问题:我怎样才能正确地设置theano标志,如何检查我是否成功了?如果这没有帮助,我该如何检查我正在构建的BLAS?我应该使用哪一个,如何更改theano的依赖?

正如你可能已经猜到的那样,对于所有这些包,依赖,构建和其他花哨的计算机科学的东西和我发现的文档只是不是noob证明所以我不是专家所以我会非常感激我们你们可以帮助我出来了!

最好

乔纳斯

小智 16

在.theanorc文件中添加一行

optimizer = None
Run Code Online (Sandbox Code Playgroud)

作为全球配置.


小智 7

我在Windows上有相同的错误消息.位于"C:\ Users\USERNAME\.theanorc.txt"中的".theanorc.txt"文件格式错误,Theano找不到Blas库.这可以在Python控制台中看到,写入"import theano; theano.config.blas.ldflags",它给出了空白字符串('').blas-keyword必须是节​​标题.

[global]
floatX = float32
device = cpu

[blas]
ldflags = -LC:\\openblas -lopenblas
Run Code Online (Sandbox Code Playgroud)

在C:\ openblass路径中,我有文件:libgcc_s_seh-1.dll,libgfortran-3.dll,libopenblas.dll和libquadmath-0.dll.请参阅http://deeplearning.net/software/theano/library/config.html


小智 1

我也遇到了同样的问题,不过是在Linux下。结果发现根本没有安装BLAS,我必须单独安装它,包括设置一些新的环境变量:

export LD_LIBRARY_PATH="/home/username/anaconda2/lib"
export LD_PRELOAD="/home/username/anaconda2/lib/libmkl_core.so:/home/MEDIANET/aharjunm/anaconda2/lib/libmkl_sequential.so"
Run Code Online (Sandbox Code Playgroud)

我还必须确保 anaconda 和任何以前的 python 安装之间没有冲突的 python 路径。

我知道在 Windows 下情况会有很大不同,但由于错误消息完全相同,因此解决方法的基本前提也应该相同:安装 BLAS。您可以找到大量相关资源,例如此处。