2016-04-26 12 views
8

Używam Tensorflow 0.8 z Pythonem 3. Próbuję wyszkolić sieć neuronową, a celem jest automatyczne eksportowanie/importowanie stanów sieciowych co 50 iteracji. Problem polega na tym, że eksportując tensor wyjściowy w pierwszej iteracji, nazwa tensora wyjściowego to ['Neg:0', 'Slice:0'], ale gdy eksportuję tensor wyjściowy w drugiej iteracji, nazwa tensora wyjściowego zmienia się na ['import/Neg:0', 'import/Slice:0'], a importowanie tego tensora wyjściowego nie działa następnie:Tensorflow 0.8 Problemy z tensorami importu i eksportu wyjściowego

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

Zastanawiam się, czy ktoś ma pomysły na ten problem. Dzięki!!!

+0

W celu wyjaśnienia czy struktura wykresu zmienia się między iteracjami lub czy chcesz zaimportować inny zestaw odważników? – mrry

+0

@mrry Właściwie, chcę eksportować/importować inny zestaw wag bez zmiany struktury wykresu :) Myślę, że tutaj może być błąd do importu/eksportu w Tensorflow 0.8. (i jestem prawie pewien, że mój kod nie ma problemów, ponieważ działa bardzo dobrze dla Tensorflow 0.6) –

+0

Brzmi jak błąd w importerze - czy przekazujesz zmienne do 'input_map' w' tf.import_graph_def() ' ? Jednak myślę, że Twój główny problem można rozwiązać, po prostu używając 'tf.train.Saver', aby zapisać i przywrócić z różnych punktów kontrolnych. – mrry

Odpowiedz

2

Tak działa tf.import_graph_def.

Jeśli nie chcesz prefiksu, po prostu ustaw parametr name na pusty łańcuch, jak pokazano w poniższym przykładzie.

# 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

Dzięki za odpowiedź! Zasadniczo użyłem tej samej funkcji importu, co tutaj pokazałeś. Moim celem jest automatyczne eksportowanie/importowanie stanów sieciowych co 50 iteracji podczas pociągu. Jak już wspomniałem w swoim pytaniu, po raz pierwszy "export" i "import" działa dobrze, ale po raz drugi w przypadku importowania sieci trafia na problem: niektóre operacje nie zostały znalezione ... Na przykład , 'ValueError: Określona kolokacja na operację, która nie istnieje podczas importu: Variable_10 w Variable/read_1'. Wypróbowałem dokładnie ten sam kod przy użyciu tf 0.6 i wszystko działa bardzo dobrze. Domyślam się, że jest zepsuty w 0.8 –

+0

raise ValueError ('tf.import_graph_def() wymaga niepustej 'name'' ValueError: tf.import_graph_def() wymaga niepustej' name', jeśli użyto 'input_map'. – pratsJ