Theano在CPU上使用CNN: AbstractConv2d优化失败

15
我正在尝试使用CIFAR10数据集在我的大学研讨会上对图像进行目标检测的CNN训练,但是我遇到了以下错误:
AssertionError: AbstractConv2d Theano优化失败:没有支持请求选项的可用实现。您是否从优化器中排除了“conv_dnn”和“conv_gemm”?如果在GPU上,是否可用cuDNN并且GPU支持它? 如果在CPU上,您是否安装了Theano可以链接的BLAS库?
我在Windows 10计算机上从Jupyter笔记本中运行Anaconda 2.7(使用CPU进行CNN训练)。由于已经使用git clone更新到最新的theano版本,因此我尝试了以下方法:
1. 直接从代码中排除dnn和gemm THEANO_FLAGS='optimizer_excluding=conv_dnn, optimizer_excluding=conv_gemm' 2. 在cmd中直接排除dnn和gemm,输入THEANO_FLAGS='...' python <myscript>.py,结果显然会出现“未知命令”错误。 3. 从位于C:/user/myusername下的.theanorc.txt中排除dnn和gemm
不幸的是,我仍然遇到相同的错误,并且当我调用print(teano.config)时,“conv_dnn”和“conv_gemm”这些术语并不出现。
此外,我还尝试找出我的numpy包正在使用哪个BLAS(通常工作正常),以及该包是否是静态的,使用dependencywalker.com上的一个工具,但我彻底失败了。
因此,我的问题是:我该如何正确设置theano标志,并如何检查我是否成功?如果这样做没有帮助,我该如何检查我正在构建什么BLAS?我应该使用哪个,以及我该如何更改theano的依赖关系?

你可能已经猜到了,当涉及到包、依赖、构建和其他高级计算机科学技术时,我并不是专家。 我找到的文档只是没有为新手提供保障,所以如果你们能帮忙解决问题,我将非常感激!

最好的祝福,

Jonas


我最终决定在Matlab中切换到matconvnet,这样更容易上手和运行!所以我无法验证你的答案,但非常感谢你! - Jonasson
3个回答

16

在 .theanorc 文件中添加一行。

optimizer = None
作为全局配置。

7
我在Windows上遇到了相同的错误信息。我的“.theanorc.txt”文件位于“C:\ Users \ USERNAME \ .theanorc.txt”,格式不正确,Theano找不到Blas库。可以通过在Python控制台中编写“import theano; theano.config.blas.ldflags”来查看此问题,它将返回空字符串('')。blas关键字必须作为部分标题。
[global]
floatX = float32
device = cpu

[blas]
ldflags = -LC:\\openblas -lopenblas

C:\openblas路径下,我有以下文件:libgcc_s_seh-1.dlllibgfortran-3.dlllibopenblas.dlllibquadmath-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"

我还需要确保anaconda和之前的python安装之间没有冲突的python路径。
我知道在Windows下会有很大的不同,但因为错误信息完全相同,治疗的基本前提应该也是相同的:安装BLAS。你可以找到很多这样的资源,例如这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接