2015-11-13 4 views
7

Ho ottenuto TF funzionante per il CIFAR Tutorial. Ho cambiato il codice per salvare lo train_dir (directory con checkpoint e modelli) in una posizione nota.Come sospendere/riprendere la formazione in Tensorflow

Il tensore sembra funzionare bene con lo specifico train_dir ed è in grado di darmi uno strumento di supervisione attraverso l'interfaccia web.

sono riuscito a correre cifar10_eval.py, con il percorso directory corretta, viene visualizzato il risultato, insieme ad alcune avvertenze .. (Sembra avrei più risorse della GPU per eseguire senza l'avvertimento ...)

2015-11-13 10: 09: 30,278,728 mila: precisione @ 1 = 0,101

W tensorflow/core/common_runtime/executor.cc 1027] 0x7fea7c0547c0 Calcola stato: annullata: operazione Enqueue stata annullata [[ Node: input_producer/input_producer_EnqueueMany = QueueEnqueueMany [Tcomponents = [DT_STRING], timeout_ms = -1, _device = "/ j ob: localhost/replica: 0/compito: 0/CPU: 0" ] (input_producer, input_producer/RandomShuffle)]]

I tensorflow/core/kernel/fifo_queue.cc: 154] Skipping cancellata tentativo enqueue

W tensorflow/core/common_runtime/executor.cc: 1027] 0x7fea2c0024e0 Stato calcolo: interrotto: RandomShuffleQueue '_2_shuffle_batch/random_shuffle_queue' è chiuso. [[Nodo: shuffle_batch/random_shuffle_queue_enqueue = QueueEnqueue [Tcomponents = [DT_FLOAT, DT_INT32], timeout_ms = -1, _device = "/ job: localhost/replica: 0/task: 0/cpu: 0"] (shuffle_batch/random_shuffle_queue, Div/_23, Cast)]]

W tensorflow/core/common_runtime/executor.cc: 1027] 0x7fea50003b80 Stato di calcolo: abortito: RandomShuffleQueue '_2_shuffle_batch/random_shuffle_queue' è chiuso. [[Nodo: shuffle_batch/random_shuffle_queue_enqueue = QueueEnqueue [Tcomponents = [DT_FLOAT, DT_INT32], timeout_ms = -1, _device = "/ job: localhost/replica: 0/task: 0/cpu: 0"] (shuffle_batch/random_shuffle_queue, Div/_23, Fusioni)]]

...

che mi porta alla mia domanda : Come posso mettere in pausa e riprendere un po 'di allenamento con TF?

risposta

12

TensorFlow utilizza un calcolo simile a un grafico, nodi (Ops) e bordi (variabili aka stati) e fornisce uno Saver per Vars.

Così come è distribuito calcolo è possibile eseguire parte di un grafico in una macchina/processore e il resto nell'altra, nel frattempo è possibile salvare lo stato (Vars) e alimentarlo la prossima volta per continuare il lavoro.

saver.save(sess, 'my-model', global_step=0) ==> filename: 'my-model-0' 
... 
saver.save(sess, 'my-model', global_step=1000) ==> filename: 'my-model-1000' 

che in seguito è possibile utilizzare

tf.train.Saver.restore(sess, save_path) 

per ripristinare il salvato Vars.

Saver Usage

+0

Usando questo comando tf.train.Saver.restore (sess, save_path) causerà un errore perché il restauro metodo necessita un'istanza Saver. – Kongsea