2016-05-01 20 views
13

Sto cercando di formare un CNN per il rilevamento di oggetti sulle immagini con il set di dati CIFAR10 per un seminario presso la mia università, ma ottengo il seguente errore:Theano CNN sulla CPU: AbstractConv2d Theano ottimizzazione fallita

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 sto eseguendo Anaconda 2.7 all'interno di un notebook Jupyter (addestramento CNN su CPU) da una macchina Windows 10. Come ho già aggiornato alla nuova versione Theano usando git clone Ho provato le seguenti cose:

  • escludono DNN e GEMM direttamente all'interno del codice THEANO_FLAGS='optimizer_excluding=conv_dnn, optimizer_excluding=conv_gemm'
  • escludono DNN e GEMM direttamente da cmd digitare THEANO_FLAGS='...' python <myscript>.py che non sorprendentemente dà un errore "comando sconosciuto".
  • escludono DNN e GEMM da un .theanorc.txt, che ho messo in C:/user/myusername

Purtroppo, ho ancora lo stesso errore e quando chiamo print(teano.config) i termini "conv_dnn" e "conv_gemm "non apparire.

  • Inoltre ho cercato di scoprire cosa Blas mio pacchetto NumPy sta usando (che funziona generalmente bene per) e se questo pacchetto è statica utilizzando uno strumento da dependencywalker.com ma ho fallito miseramente

Così ecco la mia domanda: come diavolo posso impostare correttamente le bandiere theano e come posso verificare se ho superato tale operazione? Se ciò non aiuta, come posso verificare che cosa BLAS sto costruendo? Quale dovrei usare e come posso cambiare la dipendenza per theano?

Come si può immaginare io non sono un esperto quando si tratta di tutto questo pacchetto, la dipendenza, costruito e altre cose di fantasia informatica e la documentazione trovo solo è semplicemente non noob prova così sarei molto grato che vi ragazzi potrebbero aiutarmi!

Miglior

Jonas

+0

Alla fine ho deciso di passare a matconvnet in MATLAB che era molto più facile da installare e da funzionare! Quindi non posso verificare le tue risposte, ma grazie mille! – Jonasson

risposta

1

Ho avuto lo stesso problema, ma sotto Linux. Si è scoperto che BLAS non è stato installato a tutti, e ho dovuto installarlo separatamente, compresa l'impostazione alcune nuove variabili d'ambiente:

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" 

ho dovuto anche fare in modo che non ci fossero percorsi pitone conflittuali tra di anaconda e qualsiasi precedente installazione di python.

So che sarà molto diverso in Windows, ma poiché il messaggio di errore è esattamente lo stesso, la premessa di base per una cura dovrebbe essere la stessa: installare BLAS. È possibile trovare molte fonti per questo, ad esempio here.

7

Ho avuto lo stesso messaggio di errore su Windows. Il mio file ".theanorc.txt" che si trova in "C: \ Users \ USERNAME \ .theanorc.txt" è stato formattato in modo errato e la libreria Blas non è stata trovata da Theano. Questo può essere visto nella console Python scrivendo "import theano; theano.config.blas.ldflags" che ha fornito una stringa vuota (''). La parola chiave blas deve essere intestazione di sezione.

[global] 
floatX = float32 
device = cpu 

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

In C: \ openblass percorso Ho i file: libgcc_s_seh-1.dll, libgfortran-3.dll, libopenblas.dll e libquadmath-0.dll. Fare riferimento a http://deeplearning.net/software/theano/library/config.html

16

Aggiungere una riga al file di .theanorc

optimizer = None 

come una configurazione globale.

Problemi correlati