Wie wird ein Modell in Tensorflow r12 nach Dateiname wiederhergestellt?

8

Ich habe das verteilte Mnist-Beispiel ausgeführt: Ссылка

Obwohl ich das

eingestellt habe

saver = tf.train.Saver(max_to_keep=0)

In früheren Releases, wie r11, konnte ich jedes Prüfpunktmodell durchlaufen und die Genauigkeit des Modells bewerten. Dies gab mir eine grafische Darstellung des Fortschritts der Genauigkeit gegenüber globalen Schritten (oder Iterationen).

Vor dem r12 wurden Tensorflow-Checkpoint-Modelle in zwei Dateien gespeichert, model.ckpt-1234 und model-ckpt-1234.meta . Man könnte ein Modell wiederherstellen, indem man den model.ckpt-1234 filename wie zB saver.restore(sess,'model.ckpt-1234') übergibt.

Ich habe jedoch festgestellt, dass es in r12 jetzt drei Ausgabedateien gibt: model.ckpt-1234.data-00000-of-000001 , model.ckpt-1234.index und model.ckpt-1234.meta .

Ich sehe, dass die Wiederherstellungsdokumentation besagt, dass ein Pfad wie /train/path/model.ckpt anstelle eines Dateinamens zum Wiederherstellen angegeben werden sollte. Gibt es eine Möglichkeit, eine Prüfpunktdatei gleichzeitig zu laden, um sie zu bewerten? Ich habe versucht, die model.ckpt-1234.data-00000-of-000001 , model.ckpt-1234.index und model.ckpt-1234.meta Dateien zu übergeben, aber bekomme Fehler wie unten:

W tensorflow/core/util/tensor_slice_reader.cc:95] Could not open logdir/2016-12-08-13-54/model.ckpt-0.data-00000-of-00001: Data loss: not an sstable (bad magic number): perhaps your file is in a different file format and you need to use a different restore operator?

NotFoundError (see above for traceback): Tensor name "hid_b" not found in checkpoint files logdir/2016-12-08-13-54/model.ckpt-0.index [[Node: save/RestoreV2_1 = RestoreV2[dtypes=[DT_FLOAT], _device="/job:localhost/replica:0/task:0/cpu:0"](_recv_save/Const_0, save/RestoreV2_1/tensor_names, save/RestoreV2_1/shape_and_slices)]]

W tensorflow/core/util/tensor_slice_reader.cc:95] Could not open logdir/2016-12-08-13-54/model.ckpt-0.meta: Data loss: not an sstable (bad magic number): perhaps your file is in a different file format and you need to use a different restore operator?

Ich laufe auf OSX Sierra mit Tensorflow r12 installiert über Pip.

Jede Anleitung wäre hilfreich.

Danke.

    
Taylor Childers 08.12.2016, 21:08
quelle

5 Antworten

7

Ich habe auch Tensorlfow r0.12 verwendet und ich dachte nicht, dass es ein Problem für das Speichern und Wiederherstellen des Modells gibt. Das Folgende ist ein einfacher Code, den Sie ausprobieren können:

%Vor%

Obwohl der Prüfpunkt in r0.12 in mehreren Dateien gespeichert ist, können Sie ihn mit dem gemeinsamen Präfix wiederherstellen, das in Ihrem Fall 'model.ckpt' ist.

    
Yuan Ma 11.12.2016 15:26
quelle
5

Der R12 hat das Checkpoint-Format geändert. Sie sollten das Modell im alten Format speichern.

%Vor%

Laut TensorFlow v0.12.0 RC0s Versionshinweis :

  

Das neue Prüfpunktformat wird zum Standard in tf.train.Saver. Altes V1   Checkpoints sind weiterhin lesbar; gesteuert von der write_version   Argument, tf.train.Saver schreibt nun standardmäßig in die neue V2   Format. Es reduziert signifikant den benötigten Spitzenspeicher und die Latenzzeit   während der Wiederherstellung aufgetreten.

Siehe Details in meinem Blog .

    
user7335572 23.12.2016 17:28
quelle
1

OK, ich kann meine Frage selbst beantworten. Was ich fand, war, dass mein Python-Skript ein zusätzliches '/' zu meinem Pfad hinzufügte, so dass ich ausführte: saver.restore (sess, '/ pfad / zu / train // model.ckpt-1234')

irgendwie verursacht das ein Problem mit Tensorflow.

Als ich es entfernte, rief ich an: saver.restore (sess, '/ pfad / zu / trian / model.ckpt-1234')

es hat wie erwartet funktioniert.

    
Taylor Childers 09.12.2016 18:09
quelle
1

Sie können das Modell wie folgt wiederherstellen:

%Vor%

Wo der Pfad '/ src / models / 20170512-110547 /' drei Dateien enthält:

%Vor%

Und wenn es in einem Verzeichnis mehrere Checkpoints gibt, zB: Es gibt Checkpoint-Dateien im Pfad ./20170807-231648 /:

%Vor%

Sie können sehen, dass es zwei Checkpoints gibt, also können Sie dies verwenden:

%Vor%     
raoqiang 04.08.2017 07:15
quelle
0

Ich bin neu bei TF und habe das gleiche Problem gefunden. Nachdem ich die Kommentare von Yuan Ma gelesen hatte, kopierte ich den ".index" zusammen mit der Datei ".data-00000-of-00001" in den gleichen Ordner "train \ ckt". Dann hat es funktioniert! Die .index-Datei ist also ausreichend, wenn Sie die Modelle wiederherstellen. Ich habe TF auf Win7, R12 verwendet.

    
Rocky.Chen 06.02.2017 09:55
quelle

Tags und Links