2016-04-26 38 views
8

Sto utilizzando Tensorflow 0.8 con Python 3. Sto cercando di addestrare la rete neurale e l'obiettivo è di esportare/importare automaticamente gli stati della rete ogni 50 iterazioni. Il problema è quando esporto il tensore di uscita alla prima iterazione, il nome del tensore di uscita è ['Neg:0', 'Slice:0'], ma quando esporto il tensore di uscita alla seconda iterazione, il nome del tensore di uscita viene modificato come ['import/Neg:0', 'import/Slice:0'] e l'importazione di questo tensore di uscita non funziona quindi:Tensorflow 0.8 Importazione ed esportazione di problemi di tensioni di uscita

ValueError: Specified colocation to an op that does not exist during import: import/Variable in import/Variable/read 

Mi chiedo se qualcuno ha idee su questo problema. Grazie!!!

+0

Per chiarimenti, la struttura del grafico cambia tra le iterazioni o si desidera semplicemente importare un diverso set di pesi? – mrry

+0

@mrry In realtà, voglio solo esportare/importare diversi set di pesi senza modificare la struttura del grafico :) Penso che potrebbe esserci un bug per l'importazione/esportazione in Tensorflow 0.8. (e sono abbastanza sicuro che il mio codice non abbia problemi, poiché funziona molto bene per Tensorflow 0.6) –

+0

Sembra un bug nell'importatore - stai passando le variabili a 'input_map' in' tf.import_graph_def() ' ? Tuttavia, penso che il tuo problema principale potrebbe essere risolto semplicemente usando 'tf.train.Saver' per salvare e ripristinare da diversi checkpoint. – mrry

risposta

2

Ecco come funziona tf.import_graph_def.

Se non si desidera il prefisso, è sufficiente impostare il parametro name sulla stringa vuota come mostrato nell'esempio seguente.

# import the model into the current graph 
with tf.Graph().as_default() as graph: 

    const_graph_def = tf.GraphDef() 
    with open(TRAINED_MODEL_FILENAME, 'rb') as saved_graph: 
     const_graph_def.ParseFromString(saved_graph.read()) 
     # replace current graph with the saved graph def (and content) 
     # name="" is important because otherwise (with name=None) 
     # the graph definitions will be prefixed with import. 
     # eg: the defined operation FC2/unscaled_logits:0 
     # will be import/FC2/unscaled_logits:0 
     tf.import_graph_def(const_graph_def, name="") 
    [...] 
+0

Grazie per la tua risposta! Fondamentalmente, ho usato la stessa funzione di importazione che hai mostrato qui. E il mio obiettivo è quello di esportare/importare automaticamente gli stati della rete ogni 50 iterazioni durante il treno. Come ho detto nella mia domanda, per la prima volta di 'export' e' import', funziona bene, ma per la seconda volta per l'importazione di rete, ha colpito il problema: alcuni degli op non sono stati trovati ... Per esempio , 'ValueError: Colocation specificata per un op che non esiste durante l'importazione: Variable_10 in Variable/read_1'. Ho provato lo stesso identico codice usando tf 0.6, e tutto funziona molto bene. Immagino sia rotto in 0.8 –

+0

raise ValueError ('tf.import_graph_def() richiede un 'nome' non vuoto' ValueError: tf.import_graph_def() richiede un' nome' non vuoto se 'input_map' viene usato. – pratsJ

Problemi correlati