2017-01-17 5 views
4

Ich verwende den tflearn-Wrapper über Tensorflow, um ein Modell zu erstellen, und möchte Metadaten (Labels) zur resultierenden eingebetteten Visualisierung hinzufügen. Gibt es eine Möglichkeit, eine metadata.tsv-Datei mit einem gespeicherten Prüfpunkt zu verknüpfen, nachdem sie ausgeführt wurde?Verknüpfen von Tensorboard Einbetten von Metadaten in den Prüfpunkt

Ich habe eine Datei projektor_config.pbtxt im Logverzeichnis der Checkpoint-Zusammenfassungen erstellt, wobei sich metadata.tsv im selben Ordner befindet. Die Konfiguration sieht wie folgt aus:

embeddings { 
    tensor_name: "Embedding/W" 
    metadata_path: "C:/tmp/tflearn_logs/shallow_lstm/" 
} 

und wurde mit dem Code aus der Dokumentation erstellt - https://www.tensorflow.org/how_tos/embedding_viz/

Ich habe, ohne dass die Metadaten Link von der Erstellung der tf.Session Teil in der Hoffnung, kommentiert aus Dies geschieht direkt in einem Session-Objekt, aber ich bin mir nicht sicher, ob das möglich ist.

from tensorflow.contrib.tensorboard.plugins import projector 
#with tf.Session() as sess: 
config = projector.ProjectorConfig() 
# One can add multiple embeddings. 
embedding = config.embeddings.add() 
embedding.tensor_name = 'Embedding/W' 
# Link this tensor to its metadata file (e.g. labels). 
embedding.metadata_path = 'C:/tmp/tflearn_logs/shallow_lstm/' 
# Saves a config file that TensorBoard will read during startup. 
projector.visualize_embeddings(tf.summary.FileWriter('/tmp/tflearn_logs/shallow_lstm/'), config) 

Unten ist ein Snap der aktuellen Einbettung Visualisierung. Notieren Sie die leeren Metadaten. Gibt es eine Möglichkeit, die gewünschte Metadatei direkt an diese Einbettung anzuhängen?

Embedding Visualization

Antwort

1

hatte ich das gleiche Problem, und es ist soloved jetzt :)

Im Grunde alles, was Sie tun müssen, ist folgende drei Schritte:

  1. speichern Modell Kontrollpunkt ist ckeckpoint das Verzeichnis der Annahme ckp_dir;
  2. Ort projector_config.pbtxt und metadata.tsv in ckp_dir;
  3. Lauf tensorboard --logdir=ckp_dir und klicken Sie auf die Embedding Tab

der Gehalt an projector_config.pbtxt ist:

embeddings { 
     tensor_name: "embedding_name" 
     metadata_path: "metatdata.tsv" 
    } 

Dies ist der Schlüssel die Einbettung verlinken auf metadata.tsv. In tf.Session() erhalten wir oft den Einbettungswert wie sess.run('embedding_name:0'). Aber in projektor_config.pbtxt geben wir einfach tensor_name: "embedding_name".

Im Allgemeinen können wir den Checkpoint Weg und metadata_path in projector_config.pbtxt angeben, so dass wir Kontrollpunkt, projector_config.pbtxt und metadata.tsv in verschiedenen Verzeichnissen platzieren können. Aber ich denke, es ist zu kompliziert. Ich habe es gerade wie oben gelöst.

the result shown here

-1

Ich habe das gleiche Problem. [EDIT:] Die Art, wie ich es zum Laufen bringen kann, besteht darin, ein Unterverzeichnis zu erstellen und alle Checkpoint-Dateien dort zu platzieren, wobei ein vollständiger Pfad zur Metadatendatei verwendet wird. Der Trick besteht darin, dass wenn Sie Tensorboard --logdir für dieses spezielle Verzeichnis angeben, es die Metadaten analysiert und die Wörter im Diagramm anzeigt, anstatt nur die Indizes. Der Nachteil ist, dass dann Einbettungen nicht mehr gefunden werden, wenn Sie einfach das Basislogverzeichnis als --logdir verwenden, so dass Sie immer eine separate Tensorboard-Instanz starten müssen, um die Einbettungen zu sehen.

Es ist wirklich sehr ärgerlich, und ich kann mir nicht vorstellen das der einzige Weg ist, um es Arbeit zu machen, aber ich verbrachte Stunden vor, dass man endlich geklappt ...

+1

Können Sie erklären, was meinen Sie, indem sie ‚alle Prüfpunktdateien‘? Ich stehe vor dem gleichen Problem - der Tab "Einbetten" zeigt nur 0 Tensoren gefunden ... – Insectatorious

1

Versuchen Sie dies mit Ihrem projector_config.pbtxt:

embeddings { 
    tensor_name: "Embedding/W" 
    metadata_path: "$LOGDIR/metadata.tsv" 
} 

Stellen Sie sicher, dass Ihr $LOGDIR derselbe Pfad ist, den Sie verwenden, um tensorboard --logdir=$LOGDIR auf Ihrem Terminal aufzurufen; Das heißt, es sollte relativ zu Ihrem aktuellen Verzeichnis sein (also sollte es wahrscheinlich C:/.. nicht enthalten). Fügen Sie auch den Dateinamen in die metadata_path ein.

Lassen Sie mich wissen, ob dies auch für Sie funktioniert.


Ich stolperte über das gleiche Problem Wörter anstelle von Indizes für die word2vec tutorial anzuzeigen versucht. Um das zu erreichen, dass Ihre projector_config.pbtxt sollte wie folgt aussehen:

embeddings { 
    tensor_name: "w_in" 
    metadata_path: "$LOGDIR/vocab.txt" 
} 

Sie können auch die save_vocab Funktion in dem obigen Code da verknüpft ändern möchten, wie es ist, es wandelt Unicode hex.

Verwandte Themen