2016-05-01 5 views
13

Ich versuche, ein CNN für die Objekterkennung auf Bilder mit dem CIFAR10-Datensatz für ein Seminar an meiner Universität zu trainieren, aber ich bekomme die folgende Fehlermeldung:Theano CNN auf CPU: AbstractConv2d Theano Optimierung fehlgeschlagen

AssertionError: AbstractConv2d Theano optimization failed: there is no implementation available supporting the requested options. Did you exclude both "conv_dnn" and "conv_gemm" from the optimizer? If on GPU, is cuDNN available and does the GPU support it? If on CPU, do you have a BLAS library installed Theano can link against?

I Ich betreibe Anaconda 2.7 in einem Jupyter-Notebook (CNN-Training auf der CPU) von einem Windows 10-Rechner aus. Wie ich bereits auf die neueste Theanos Version mit git clone aktualisiert habe ich versucht, die folgenden Dinge:

  • dnn ausschließen und direkt im Code von gemm THEANO_FLAGS='optimizer_excluding=conv_dnn, optimizer_excluding=conv_gemm'
  • dnn ausschließen und gemm direkt von cmd THEANO_FLAGS='...' python <myscript>.py Schreibarbeiten, die nicht überraschend gibt einen "unbekannten Befehl" Fehler.
  • ausschließen dnn und gemm von einem .theanorc.txt, die ich in C setzen:/user/myusername

Leider habe ich immer noch den gleichen Fehler, und wenn ich print(teano.config) die Begriffe „conv_dnn“ und „conv_gemm nennen " erscheint nicht.

  • Außerdem habe ich versucht, um herauszufinden, was mein numpy Paket blas verwendet (das funktioniert im Allgemeinen gut für) und wenn das Paket ein Werkzeug aus dependencywalker.com statisch verwenden, aber ich kläglich gescheitert

So Hier ist meine Frage: Wie kann ich die theano flags richtig einstellen und wie kann ich prüfen, ob ich erfolgreich war? Wenn das nicht hilft, wie kann ich überprüfen, welche BLAS ich baue? Welchen sollte ich verwenden und wie kann ich die Abhängigkeit für theano ändern?

Wie Sie vielleicht erraten haben, bin ich kein Experte, wenn es um all dieses Paket kommt, Abhängigkeit, gebaut und andere ausgefallene Informatik Zeug und die Dokumentation, die ich nur finde, ist nicht noob Beweis, so würde ich Ihnen sehr dankbar sein Leute könnten mir helfen!

Beste

Jonas

+0

Ich entschied mich schliesslich in Matlab zu matconvnet zu wechseln, was viel einfacher war! Also kann ich deine Antworten nicht bestätigen, aber vielen Dank! – Jonasson

Antwort

1

hatte ich das gleiche Problem, aber unter Linux. Es stellte sich heraus, dass BLAS gar nicht installiert wurde, und ich hatte es separat zu installieren, darunter einige neue Umgebungsvariablen:

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" 

Ich hatte auch sicherstellen, dass es keine widersprüchlichen Python Pfade zwischen anaconda waren und jeder vorherige Python-Installation.

Ich weiß, dass es unter Windows sehr unterschiedlich sein wird, aber weil die Fehlermeldung genau die gleiche ist, sollte die Grundvoraussetzung für eine Heilung die gleiche sein: Installieren Sie BLAS. Sie können viele Quellen dafür finden, zum Beispiel here.

7

Ich hatte dieselbe Fehlermeldung unter Windows. Meine Datei ".theanorc.txt", die sich in "C: \ Users \ USERNAME \ .theanorc.txt" befindet, wurde falsch formatiert und die Blas-Bibliothek wurde von Theano nicht gefunden. Dies wird in der Python-Konsole angezeigt, indem "import theano; theano.config.blas.ldflags" geschrieben wird, was eine leere Zeichenfolge ('') ergibt. Das blas-Schlüsselwort muss als Abschnittsüberschrift sein.

[global] 
floatX = float32 
device = cpu 

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

In C: \ openblass Pfad Ich habe Dateien: libgcc_s_seh-1.dll, libgfortran-3.dll, libopenblas.dll und libquadmath-0.dll. zu http://deeplearning.net/software/theano/library/config.html Siehe

16

In einer Zeile Datei .theanorc

optimizer = None 

als globale Konfiguration.