Comment utiliser TensorBoard Embedding Projector? [fermé]

Où puis-je trouver de la documentation sur le projecteur encastré inclus dans Tensorboard? Ici, il y a quelques références à elle, mais il n'y a pas d'exemple pas à pas/tutoriel sur la façon de l'utiliser.

16
demandé sur Bruno Oliveira 2016-11-28 19:28:35

4 réponses

autant que je sache est la seule documentation sur l'intégration de la visualisation sur le site Web TensorFlow. Bien que le code snippet ne soit pas très instructif pour les premiers utilisateurs, voici donc un exemple d'usage:

import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

LOG_DIR = 'logs'

mnist = input_data.read_data_sets('MNIST_data')
images = tf.Variable(mnist.test.images, name='images')

with tf.Session() as sess:
    saver = tf.train.Saver([images])

    sess.run(images.initializer)
    saver.save(sess, os.path.join(LOG_DIR, 'images.ckpt'))

ici nous créons d'abord une variable TensoFlow (images) et ensuite le sauvegarder en utilisant tf.train.Saver. Après avoir exécuté le code, nous pouvons lancer TensorBoard en émettant tensorboard --logdir=logs commande et d'ouverture localhost:6006 dans un navigateur.

PCA Visualization Toutefois, cette visualisation n'est pas très utile car nous ne voyons pas de classes différentes auxquelles chaque point de données appartient. Afin de distinguer chaque classe d'une autre, on devrait fournir certaines métadonnées:

import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.contrib.tensorboard.plugins import projector


LOG_DIR = 'logs'
metadata = os.path.join(LOG_DIR, 'metadata.tsv')

mnist = input_data.read_data_sets('MNIST_data')
images = tf.Variable(mnist.test.images, name='images')

with open(metadata, 'w') as metadata_file:
    for row in mnist.test.labels:
        metadata_file.write('%d\n' % row)

with tf.Session() as sess:
    saver = tf.train.Saver([images])

    sess.run(images.initializer)
    saver.save(sess, os.path.join(LOG_DIR, 'images.ckpt'))

    config = projector.ProjectorConfig()
    # One can add multiple embeddings.
    embedding = config.embeddings.add()
    embedding.tensor_name = images.name
    # Link this tensor to its metadata file (e.g. labels).
    embedding.metadata_path = metadata
    # Saves a config file that TensorBoard will read during startup.
    projector.visualize_embeddings(tf.summary.FileWriter(LOG_DIR), config)

ce Qui nous donne:

enter image description here

33
répondu enezhadian 2016-12-28 22:27:55

malheureusement, je ne trouve pas de documentation plus complète. Ci-dessous je recueille toutes les ressources connexes:

PS: Merci pour upvoting moi. Maintenant je peux poster tous les liens.

9
répondu Korakot Chaovavanich 2017-07-20 07:20:23

il semble que vous voulez obtenir la section de visualisation avec t-SNE fonctionnant sur TensorBoard. Comme vous l'avez décrit, L'API de Tensorflow n'a fourni que les commandes essentielles dans le guide.

j'ai téléchargé ma solution de travail avec l'ensemble de données MNIST à mon dépôt GitHub.

Origine Stackoverflow réponse: TensorBoard Incorporation Exemple?

3
répondu norman_h 2017-05-23 12:09:38

@Ehsan

Votre explication est très bonne. La clé ici est que chaque Variable doit être initialisée avant veille.enregistrer.(..) appeler.

@tout le monde

En outre, TensorBoard embedding est simplement des instances de visualisation de classe de Variable sauvée. Il ne se soucie pas de savoir si ce sont des mots ou des images ou quoi que ce soit d'autre.

La doc officielle https://www.tensorflow.org/get_started/embedding_viz ne pas dire que c'est une direction la visualisation de la matrice, qui, à mon avis, a introduit beaucoup de confusion.

peut-être vous demandez-vous ce que cela signifie de visualiser une matrice. Une matrice peut être interprété comme un ensemble de points dans un espace.

si j'ai une matrice avec forme (100, 200), je peux l'interpréter comme une collection de 100 points, où chaque point A 200 Dimensions. En d'autres termes, 100 points dans un espace de 200 Dimensions.

dans le cas de word2vec, nous avons 100 mots où chaque mot est représenté par un vecteur de 200 longueurs. TensorBoard embedding utilise simplement PCA ou T-SNE pour visualiser cette collection(matrix).

par conséquent, vous pouvez passer par toutes les matrices aléatoires. Si vous utilisez une image avec forme (1080, 1920), elle visualisera chaque ligne de cette image comme s'il s'agissait d'un point unique.

cela dit, Vous pouvez visualiser l'intégration de n'importe quelles instances de classe variables en enregistrant simplement saver = tf.train.Saver([a, _list, of, wanted, variables]) ...some code you may or may not have... saver.save(sess, os.path.join(LOG_DIR, 'filename.ckpt'))

je vais essayer de faire un tutoriel détaillé tard.

1
répondu Albert X.W. 2017-03-14 00:52:29