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.
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:
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.
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. :)
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
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
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:
Zu Ihrer Information: Wie kann ich auswählen, welchen Prüfpunkt auf der Registerkarte "Einbetten" von TensorBoard angezeigt werden soll?
Die akzeptierte Antwort war sehr hilfreich, um die allgemeine Reihenfolge zu verstehen:
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 .
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.
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