web-dev-qa-db-fra.com

Exemple d’incorporation de TensorBoard?

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.

17
Patrick

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:

  1. Créez des métadonnées pour chaque dimension.
  2. Associez des images à chaque dimension.
  3. Chargez les données dans TensorFlow et enregistrez les intégrations dans un LOG_DIR. 

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.

  1. Préparer les données de la source
  2. Chargement des données dans un 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. :)

13
norman_h

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
19
Samir

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

5
Malex

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:

 enter image description here

 enter image description here

FYI: Comment sélectionner le point de contrôle à afficher dans l'onglet Embeddings de TensorBoard?

3

La réponse acceptée a été très utile pour comprendre la séquence générale:

  1. Créer des métadonnées pour chaque vecteur (échantillon)
  2. Associer des images (sprites) à chaque vecteur 
  3. Chargez les données dans TensorFlow et enregistrez les intégrations à l'aide de checkpoint et de rédacteur de résumé (en veillant à ce que les chemins soient cohérents tout au long du processus).

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

 enter image description here

1
Altermarkive

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.

0
I. Cantrell

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 

0
Prakhar Agarwal