2017-02-27 2 views
0

In einem meiner Projekt, ich habe eine öffentliche vortrainierte Inception-V3-Modell hier verfügbar: http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz.Verwenden von Inception-v3 Checkpoint-Datei in Tensorflow

Ich möchte nur den letzten Merkmalsvektor verwenden (Ausgabe von pool_3/_reshape: 0). Wenn ich mir das Skriptbeispiel classify_image.py anschaue, kann ich ein Bild durch den Deep DNN erfolgreich übergeben, den Flaschenhals-Tensor (bottleneck_tensor = sess.graph.get_tensor_by_name('pool_3/_reshape:0')) extrahieren und für weitere Zwecke verwenden.

Ich habe kürzlich gesehen, dass es ein jüngeres Ausbildungsmodell gab. Checkpoint des Trainings ist hier verfügbar: http://download.tensorflow.org/models/image/imagenet/inception-v3-2016-03-01.tar.gz.

Ich möchte dieses neue vortrainierte anstelle des alten verwenden. Das Dateiformat ist jedoch unterschiedlich. Das "alte Modell" verwendet einen Graph def in ProtocolBuffer-Form (classify_image_graph_def.pb), der leicht wiederverwendbar ist. Die "neue" bietet nur ein Checkpoint-Format, und ich habe Mühe, es in meinen Code einzufügen.

Gibt es eine einfache Möglichkeit, eine Prüfpunktdatei in eine ProtocolBuffer-Datei zu konvertieren, die dann zum Erstellen eines Diagramms verwendet werden kann?

Vielen Dank im Voraus!

+0

Sie einen Blick auf dieses Tutorial genommen haben? https://www.tensorflow.org/programmers_guide/variables#checkpoint_files Es erklärt, wie man aus Checkpoint-Dateien wiederherstellen kann. – Neal

Antwort

0

Es scheint, Sie freeze_graph.py verwenden: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/freeze_graph.py

Das Skript wandelt Checkpoint Variablen in Konst ops in einer eigenständigen GraphDef Datei. Dieses Skript wurde entwickelt, um ein GraphDef-Proto, ein SaverDef-Proto- koll und eine Gruppe von Variablenwerten in einer Prüfpunktdatei zu speichern und ein GraphDef mit allen Variablenoperanden in const ops mit den Werten der Variablen auszugeben. Dies ist nützlich, wenn wir eine einzelne Datei in C++ laden müssen, insbesondere in Umgebungen wie Mobile oder Embedded, wo wir möglicherweise keinen Zugriff auf die RestoreTensor-Ops und Dateiladeaufrufe haben, auf die sie angewiesen sind.

Ein Beispiel für Befehlszeilen Nutzung ist:

bazel build tensorflow/python/tools:freeze_graph && \ 
bazel-bin/tensorflow/python/tools/freeze_graph \ 
--input_graph=some_graph_def.pb \ 
--input_checkpoint=model.ckpt-8361242 \ 
--output_graph=/tmp/frozen_graph.pb --output_node_names=softmax 
Verwandte Themen