webentwicklung-frage-antwort-db.com.de

Beispiel zum Einbetten von TensorBoard?

Ich suche ein Tensorboard-Einbettungsbeispiel, mit Iris-Daten zum Beispiel wie dem Einbettungsprojektor http://projector.tensorflow.org/

Leider konnte ich keinen finden. Nur ein paar Informationen dazu in https://www.tensorflow.org/how_tos/embedding_viz/

Kennt jemand ein grundlegendes Tutorial für diese Funktionalität?

Grundlagen:

1) Richten Sie eine 2D-Tensor-Variable (n) ein, die Ihre Einbettung (en) enthält.

embedding_var = tf.Variable(....)

2) Speichern Sie Ihre Einbettungen regelmäßig in einem LOG_DIR.

3) Verknüpfen Sie Metadaten mit Ihrer Einbettung.

17
Patrick

Es klingt, als ob Sie den Visualisierungsbereich mit t-SNE auf TensorBoard abrufen möchten. Wie Sie beschrieben haben, hat die API von Tensorflow nur die wichtigsten Befehle im How-to-Dokument bereitgestellt.

Ich habe meine Arbeitslösung mit dem MNIST-Dataset in mein GitHub-Repo hochgeladen.

Ja, es ist in drei allgemeine Schritte unterteilt:

  1. Erstellen Sie Metadaten für jede Dimension.
  2. Ordnen Sie jeder Dimension Bilder zu.
  3. Laden Sie die Daten in TensorFlow und speichern Sie die Einbettungen in einem LOG_DIR. 

Das Release TensorFlow r0.12 enthält nur allgemeine Informationen. Es gibt kein vollständiges Codebeispiel, das mir im offiziellen Quellcode bekannt ist. 

Ich fand heraus, dass es zwei Aufgaben gab, die im How to nicht dokumentiert waren.

  1. Daten aus der Quelle vorbereiten
  2. Laden der Daten in einen tf.Variable

Während TensorFlow für die Verwendung von GPUs ausgelegt ist, entschied ich mich in dieser Situation, die t-SNE-Visualisierung mit der CPU zu generieren, da der Prozess mehr Speicher beanspruchte, als meine MacBookPro-GPU Zugriff hat. Der TensiFlow-API-Zugriff auf das MNIST-Dataset ist enthalten. Die MNIST-Daten werden als strukturiertes numpy-Array geliefert. Mit der Funktion tf.stack kann dieser Datensatz in eine Liste von Tensoren gestapelt werden, die in eine Visualisierung eingebettet werden können. Der folgende Code enthält, wie ich die Daten extrahierte und die TensorFlow-Einbettungsvariable einrichtete. 

with tf.device("/cpu:0"):
    embedding = tf.Variable(tf.stack(mnist.test.images[:FLAGS.max_steps], axis=0), trainable=False, name='embedding')

Das Erstellen der Metadaten-Datei wurde mit dem Aufteilen eines numpy-Arrays durchgeführt.

def save_metadata(file):
    with open(file, 'w') as f:
        for i in range(FLAGS.max_steps):
            c = np.nonzero(mnist.test.labels[::1])[1:][0][i]
            f.write('{}\n'.format(c))

Das Zuordnen einer Image-Datei ist wie in der Anleitung beschrieben. Ich habe eine PNG-Datei der ersten 10.000 MNIST-Bilder in mein GitHub hochgeladen.

Bisher funktioniert TensorFlow wunderbar für mich, es ist sehr rechenintensiv, gut dokumentiert und die API scheint für alles, was ich im Moment mache, funktional zu sein. Ich freue mich darauf, im kommenden Jahr weitere Visualisierungen mit benutzerdefinierten Datensätzen zu erstellen. Dieser Beitrag wurde von mein Blog bearbeitet. Viel Glück für Sie, bitte lassen Sie mich wissen, wie es geht. :)

13
norman_h

Ich habe FastText's vortrainierte Word-Vektoren mit TensorBoard verwendet.

import os
import tensorflow as tf
import numpy as np
import fasttext
from tensorflow.contrib.tensorboard.plugins import projector

# load model
Word2vec = fasttext.load_model('wiki.en.bin')

# create a list of vectors
embedding = np.empty((len(Word2vec.words), Word2vec.dim), dtype=np.float32)
for i, Word in enumerate(Word2vec.words):
    embedding[i] = Word2vec[Word]

# setup a TensorFlow session
tf.reset_default_graph()
sess = tf.InteractiveSession()
X = tf.Variable([0.0], name='embedding')
place = tf.placeholder(tf.float32, shape=embedding.shape)
set_x = tf.assign(X, place, validate_shape=False)
sess.run(tf.global_variables_initializer())
sess.run(set_x, feed_dict={place: embedding})

# write labels
with open('log/metadata.tsv', 'w') as f:
    for Word in Word2vec.words:
        f.write(Word + '\n')

# create a TensorFlow summary writer
summary_writer = tf.summary.FileWriter('log', sess.graph)
config = projector.ProjectorConfig()
embedding_conf = config.embeddings.add()
embedding_conf.tensor_name = 'embedding:0'
embedding_conf.metadata_path = os.path.join('log', 'metadata.tsv')
projector.visualize_embeddings(summary_writer, config)

# save the model
saver = tf.train.Saver()
saver.save(sess, os.path.join('log', "model.ckpt"))

Dann führen Sie diesen Befehl in Ihrem Terminal aus:

tensorboard --logdir=log
19
Samir

Weitere Informationen zu diesem Thema finden Sie unter "Praktisches TensorBoard (TensorFlow Dev Summit 2017)" https://www.youtube.com/watch?v=eBbEDRsCmv4 Es zeigt die Einbettung von TensorBoard in den MNIST-Datensatz.

Beispielcode und Folien für das Gespräch finden Sie hier https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial

5
Malex

Im TensorFlow-zu-GitHub-Repository wurde ein Problem angesprochen: Kein reales Codebeispiel für die Verwendung der Tensorboard-Einbettungslasche # 6322 ( mirror ).

Es enthält einige interessante Hinweise.


Bei Interesse Code, der TensorBoard-Einbettungen zum Anzeigen von Zeichen- und Word-Einbettungen verwendet: https://github.com/Franck-Dernoncourt/NeuroNER

Beispiel:

 enter image description here

 enter image description here

Zu Ihrer Information: Wie kann ich auswählen, welchen Prüfpunkt auf der Registerkarte "Einbetten" von TensorBoard angezeigt werden soll?

3

Die akzeptierte Antwort war sehr hilfreich, um die allgemeine Reihenfolge zu verstehen:

  1. Erstellen Sie Metadaten für jeden Vektor (Beispiel)
  2. Ordnen Sie jedem Vektor Bilder (Sprites) zu 
  3. Laden Sie die Daten in TensorFlow und speichern Sie die Einbettungen mit Checkpoint und Summary Writer (beachten Sie, dass die Pfade im gesamten Prozess konsistent sind).

Für mich war das MNIST-basierte Beispiel immer noch zu sehr auf vorgelernte Daten und vorgenerierte Sprite- & Metadatendateien angewiesen. Um diese Lücke zu füllen, habe ich ein solches Beispiel erstellt und beschlossen, es für alle Interessierten hier zu veröffentlichen. Der Code steht auf GitHub und der Videodurchlauf auf YouTube .

enter image description here

1
Altermarkive

Hier ist ein Link zu einem offiziellen Leitfaden. 

https://www.tensorflow.org/versions/r1.1/get_started/embedding_viz

Es heißt, es wurde zuletzt im Juni 2017 aktualisiert.

0
I. Cantrell

Vorgelernte Einbettungen nehmen und auf Tensorboard visualisieren.

einbetten -> geschultes einbetten

metadata.tsv -> Metadateninformationen

max_size -> embedding.shape [0]

import tensorflow as tf
from tensorflow.contrib.tensorboard.plugins import projector

sess = tf.InteractiveSession()

with tf.device("/cpu:0"):
    tf_embedding = tf.Variable(embedding, trainable = False, name = "embedding")

tf.global_variables_initializer().run()
path = "tensorboard"
saver = tf.train.Saver()
writer = tf.summary.FileWriter(path, sess.graph)
config = projector.ProjectorConfig()
embed = config.embeddings.add()
embed.tensor_name = "embedding"
embed.metadata_path = "metadata.tsv"
projector.visualize_embeddings(writer, config)
saver.save(sess, path+'/model.ckpt' , global_step=max_size )

$ tensorboard --logdir = "tensorboard" --port = 8080 

0
Prakhar Agarwal