Je cherche un exemple d’incorporation de tensorboard, avec des données d’iris, comme le projecteur d’incorporation http://projector.tensorflow.org/
Mais malheureusement, je n'ai pas pu en trouver un. Quelques informations sur la manière de le faire dans https://www.tensorflow.org/how_tos/embedding_viz/
Est-ce que quelqu'un connaît un tutoriel de base pour cette fonctionnalité?
Bases:
1) Configurez une ou plusieurs variables de tenseur 2D qui contiennent votre incorporation.
embedding_var = tf.Variable(....)
2) Enregistrez périodiquement vos embeddings dans un LOG_DIR.
3) Associez des métadonnées à votre intégration.
Il semble que vous souhaitiez que la section Visualization avec t-SNE s'exécute sur TensorBoard. Comme vous l'avez décrit, l'API de Tensorflow n'a fourni que les commandes essentielles essentielles dans le document how-to .
J'ai téléchargé ma solution de travail avec l'ensemble de données MNIST sur mon compte GitHub .
Oui, il se décompose en trois étapes générales:
Seuls les détails génériques sont intégrés à la version TensorFlow r0.12. Je ne connais aucun exemple de code complet dans le code source officiel.
J'ai trouvé qu'il y avait deux tâches impliquées qui n'étaient pas documentées dans le comment.
tf.Variable
Bien que TensorFlow soit conçu pour l’utilisation des GPU, j’ai choisi de générer la visualisation t-SNE avec le processeur, le processus nécessitant plus de mémoire que mon GPU MacBookPro n’a accès. L'accès API au jeu de données MNIST est inclus dans TensorFlow, je l'ai donc utilisé. Les données MNIST se présentent sous la forme d'un tableau numpy structuré. L'utilisation de la fonction tf.stack
permet d'empiler cet ensemble de données dans une liste de tenseurs pouvant être intégrés à une visualisation. Le code suivant indique comment j'ai extrait les données et configuré la variable d’incorporation TensorFlow.
with tf.device("/cpu:0"):
embedding = tf.Variable(tf.stack(mnist.test.images[:FLAGS.max_steps], axis=0), trainable=False, name='embedding')
La création du fichier de métadonnées a été effectuée avec le découpage d’un tableau numpy.
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))
Avoir un fichier image à associer est comme décrit dans le tutoriel. J'ai téléchargé un fichier png des 10 000 premières images MNIST sur mon GitHub .
Jusqu’à présent, TensorFlow fonctionnait à merveille pour moi. C’est un processus informatique rapide, bien documenté et l’API semble être fonctionnellement complète pour tout ce que je suis sur le point de faire. Je suis impatient de générer d'autres visualisations avec des jeux de données personnalisés au cours de la prochaine année. Cet article a été édité à partir de mon blog . Bonne chance à vous, s'il vous plaît laissez-moi savoir comment ça se passe. :)
J'ai utilisé les vecteurs Word pré-formés de FastText avec TensorBoard.
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"))
Puis lancez cette commande dans votre terminal:
tensorboard --logdir=log
Consultez cette discussion "Travaux pratiques sur TensorBoard (TensorFlow Dev Summit 2017)" https://www.youtube.com/watch?v=eBbEDRsCmv4 Il illustre l'intégration de TensorBoard dans l'ensemble de données MNIST.
Vous trouverez des exemples de code et des diapositives pour l’exposé ici https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial
Un problème a été soulevé dans le référentiel TensorFlow vers GitHub: Aucun exemple de code réel pour l’utilisation de l’onglet d’incorporation de tensorboard n ° 6322 ( miroir ).
Il contient des indications intéressantes.
Si cela vous intéresse, un code utilisant les incorporations TensorBoard pour afficher les incorporations de caractères et de Word: https://github.com/Franck-Dernoncourt/NeuroNER
Exemple:
FYI: Comment sélectionner le point de contrôle à afficher dans l'onglet Embeddings de TensorBoard?
La réponse acceptée a été très utile pour comprendre la séquence générale:
Pour moi, l'exemple basé sur MNIST reposait encore trop sur des données pré-entraînées et des fichiers Sprite et métadonnées pré-générés. Pour combler cette lacune, j'ai moi-même créé cet exemple et décidé de le partager ici pour les personnes intéressées - le code est sur GitHub et la vidéo en continu sur YouTube
Voici un lien vers un guide officiel.
https://www.tensorflow.org/versions/r1.1/get_started/embedding_viz
Il dit que c'était la dernière mise à jour Juin 2017.
Prendre des embedings pré-entraînés et les visualiser sur un tableau de bord.
incorporation -> entrainement
metadata.tsv -> informations sur les métadonnées
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