2015-12-03 3 views
7

Sto provando a eseguire il tutorial CIFAR10 con il codice di allenamento su una gpu e il codice di valutazione sull'altro. So per certo che ho due gpus sul mio computer, e posso verificarlo eseguendo i semplici esempi qui: https://www.tensorflow.org/how_tos/using_gpu/index.htmlErrore esplicito del dispositivo per il flusso tensoriale Errore

Tuttavia, l'utilizzo di with device('/gpu:0') non funziona per la maggior parte delle variabili nell'esempio CIFAR. Ho provato un sacco di combinazioni di diverse variabili su gpu vs cpu, o tutte le variabili su uno o l'altro. Sempre lo stesso errore per qualche variabile, qualcosa di simile:

Cannot assign a device to node 'shuffle_batch/random_shuffle_queue': Could not satisfy explicit device specification '/gpu:0' 

È questo forse un bug in Tensor flusso o mi sto perdendo qualcosa?

risposta

8

Could not satisfy explicit device specification significa che non si dispone del dispositivo corrispondente. Avete effettivamente una GPU abilitata CUDA sulla vostra macchina?

UPDATE: Come si è scoperto nella discussione che segue, viene generato questo errore anche se l'operazione particolare (in questo caso, RandomShuffleQueue) non può essere eseguito sulla GPU, perché ha solo un'implementazione CPU.

Se si sta bene con tensorflow la scelta di un dispositivo per voi (in particolare, ricadendo a CPU quando alcuna implementazione GPU è disponibile), considerare la creazione allow_soft_placement nella configurazione, come da this article:

sess = tf.Session(config=tf.ConfigProto(
    allow_soft_placement=True, log_device_placement=True)) 
+0

lo so usa la GPU sulla mia macchina. Si registra che lo fa. Posso farlo funzionare senza etichettare esplicitamente quale GPU usare e proverà a usare/gpu: 0. Funziona bene So anche che nel caso generale per variabili semplici posso usare esplicitamente una particolare GPU, come quella descritta nel link che ho inserito. – bschreck

+0

Il problema è specifico del modo in cui il codice sta funzionando nel tutorial – bschreck

+0

a quale riga particolare non riesce (so che hai detto che ce ne sono diversi, ma almeno un esempio sarebbe utile). Potrebbe essere che il comando non riesca a essere eseguito solo sulla CPU? – Ishamael