Как использовать встраиваемый проектор tensorboard?

Как использовать встроенный проектор, включенный в Tensorboard?

Не могу найти на него документацию. Есть несколько ссылок на него здесь, но нет шага- пошаговый пример/учебник о том, как его использовать.


person Bruno Oliveira    schedule 28.11.2016    source источник
comment
Этот вопрос не по теме; вопросы, требующие только рекомендации руководств или других сторонних ресурсов, не относятся к теме Stack Overflow. Вместо этого начните писать код и возвращайтесь, когда у вас возникнет более конкретная проблема. Не забудьте показать нам что вы пробовали и включить Минимальный, полный, проверяемый пример.   -  person Scott Weldon    schedule 01.12.2016
comment
Я считаю, что этот вопрос должен быть полезен для многих пользователей tensorflow.   -  person EyesBear    schedule 05.07.2019
comment
Я думаю, что это замечательный вопрос, и его не следует закрывать. Существует очень мало документации по этой штуке, так как же вы ожидаете, что исходный постер придумает какой-то исходный код? Этот ответ stackoverflow.com/a/42775951/1286165 проливает свет, но в нем по-прежнему отсутствует фактический код.   -  person 183.amir    schedule 18.07.2019


Ответы (4)


Насколько мне известно, это единственная документация по внедрению визуализации на веб-сайте TensorFlow. Хотя фрагмент кода может быть не очень информативным для начинающих пользователей, вот пример использования:

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'))

Здесь сначала мы создаем переменную TensoFlow (images), а затем сохраняем ее с помощью tf.train.Saver. После выполнения кода мы можем запустить TensorBoard, введя команду tensorboard --logdir=logs и открыв localhost:6006 в браузере.

«Визуализация Однако эта визуализация не очень полезна, потому что мы не видим разные классы, к которым принадлежит каждая точка данных. Чтобы отличить один класс от другого, необходимо предоставить некоторые метаданные:

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)

Что дает нам:

введите описание изображения здесь

person enezhadian    schedule 28.12.2016
comment
Что означает Общая дисперсия: 26,4 % означает. С этим значением можно ли сказать, что определенные характеристики данных хороши или плохи? - person Wazy; 14.12.2017
comment
Каков формат переменных метаданных? Это словарь с меткой в ​​качестве ключей и данными в качестве значения? - person Junning Huang; 14.12.2018
comment
embedding.metadata_path должно быть os.path.basename(metadata) - person oezguensi; 21.06.2019
comment
@Wazy, я уверен, что вы уже выяснили, но общая объясненная дисперсия вычисляется путем взятия суммы собственных значений из собственных векторов, используемых в сумме всех собственных значений. Вы хотите более высокое значение. Более низкое значение означает, что отклонение вдоль некоторой главной оси проецируется на плоскую поверхность и не учитывается в нижней встроенной визуализации. - person leonard; 15.10.2019

К сожалению, я не могу найти более полную документацию. Ниже я собираю все сопутствующие ресурсы:

PS: Спасибо, что проголосовали за меня. Теперь я могу разместить все ссылки.

Обновление 2019-08

Теперь вы можете легко использовать встроенный проектор в Colab с PyTorch's SummaryWriter.

import numpy as np
import tensorflow as tf
import tensorboard as tb
tf.io.gfile = tb.compat.tensorflow_stub.io.gfile
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

Обновление 2020-02

Магия %tensorboard теперь снова работает правильно.

person korakot    schedule 16.12.2016

@Ehsan
Ваше объяснение очень хорошее. Ключевым моментом здесь является то, что каждая переменная должна быть инициализирована до вызова saver.save(...).

@Everyone
Кроме того, встраивание tensorboard — это просто визуализация экземпляров сохраненного класса Variable. Ему все равно, слова это, образы или что-то еще.

Официальный документ https://www.tensorflow.org/get_started/embedding_viz не указывает, что это направление визуализации матрицы, которое, на мой взгляд, внесло много путаницы.

Может быть, вам интересно, что значит визуализировать матрицу. Матрицу можно интерпретировать как набор точек в пространстве.

Если у меня есть матрица формы (100, 200), я могу интерпретировать ее как набор из 100 точек, где каждая точка имеет 200 измерений. Другими словами, 100 точек в 200-мерном пространстве.

В случае word2vec у нас есть 100 слов, где каждое слово представлено вектором длиной 200. Встраивание Tensorboard просто использует PCA или T-SNE для визуализации этой коллекции (матрицы).

Поэтому можно через любые случайные матрицы. Если вы просматриваете изображение с формой (1080, 1920), оно будет визуализировать каждую строку этого изображения, как будто это одна точка.

Тем не менее, вы можете визуализировать встраивание любых экземпляров класса Variable, просто сохранив затем 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'))

Позже постараюсь сделать подробный мастер-класс.

person Albert X.W.    schedule 14.03.2017

Похоже, вы хотите получить раздел визуализации с t-SNE, работающим на TensorBoard. Как вы описали, API Tensorflow предоставил только самые необходимые команды в документе с практическими рекомендациями. .

Я загрузил свое рабочее решение с набором данных MNIST в мой репозиторий GitHub.

Исходный ответ Stackoverflow: Пример внедрения TensorBoard?

person norman_h    schedule 14.02.2017