web-dev-qa-db-fra.com

Comment utiliser le projecteur d'enrobage tensorboard?

Où puis-je trouver de la documentation sur le projecteur d'intégration intégré à Tensorboard? Ici , il y a quelques références à cela, mais il n'y a pas d'exemple/tutoriel étape par étape sur la façon de l'utiliser.

32
Bruno Oliveira

Autant que je sache, this est la seule documentation relative à l'intégration de la visualisation sur le site Web de TensorFlow. Bien que l'extrait de code puisse ne pas être très instructif pour les utilisateurs novices, voici un exemple d'utilisation:

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), puis l’enregistrons avec tf.train.Saver. Après avoir exécuté le code, nous pouvons lancer TensorBoard en lançant tensorboard --logdir=logs commande et ouverture localhost:6006 dans un navigateur.

PCA Visualization Cependant, cette visualisation n’est pas très utile car nous ne voyons pas les différentes classes auxquelles chaque point de données appartient. Afin de distinguer chaque classe d'une autre, vous devez fournir des 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

55
enezhadian

Malheureusement, je ne trouve pas de documentation plus complète. Ci-dessous, je collectionne toutes les ressources liées:

PS: Merci de m'avoir voté. Maintenant, je peux poster tous les liens.

Mise à jour 2019-08

Maintenant, vous pouvez facilement utiliser un projecteur d’incorporation dans Colab avec SummaryWriter de PyTorch.

import numpy as np
from torch.utils.tensorboard import SummaryWriter
vectors = np.array([[0,0,1], [0,1,0], [1,0,0], [1,1,1]])
metadata = ['001', '010', '100', '111']  # labels
writer = SummaryWriter()
writer.add_embedding(vectors, metadata)
writer.close()
%load_ext tensorboard
%tensorboard --logdir=runs
18

@Ehsan
Votre explication est très bonne. La clé ici est que chaque variable doit être initialisée avant l'appel de saver.save (...).

@Toutes les personnes
En outre, l’intégration de tensorboard consiste simplement à visualiser les instances de la classe Variable enregistrée. Peu importe que ce soit des mots, des images ou autre chose.

Le document officiel https://www.tensorflow.org/get_started/embedding_viz ne précise pas qu'il s'agit d'une visualisation directionnelle de la matrice, qui, à mon avis, a créé beaucoup de confusion.

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

Si j'ai une matrice de forme (100, 200), je peux l'interpréter comme une collection de 100 points, chaque point ayant 200 dimensions. En d'autres termes, 100 points dans un espace de 200 dimensions.

Dans le cas de Word2vec, nous avons 100 mots, chaque mot étant représenté par un vecteur de 200 longueurs. L’intégration de Tensorboard utilise simplement PCA ou T-SNE pour visualiser cette collection (matrice).

Par conséquent, vous pouvez utiliser toutes les matrices aléatoires. Si vous utilisez une image avec une forme (1080, 1920), chaque ligne de cette image sera visualisée comme s'il s'agissait d'un point unique.

Cela dit, vous pouvez visualiser l’incorporation de n’importe quelle instance de la classe Variable simplement en enregistrant ensuite 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é plus tard.

5
Albert X.W.

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 pratique .

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

Réponse Stackoverflow originale: Exemple d’incorporation de TensorBoard?

4
norman_h