Как использовать встроенный проектор, включенный в Tensorboard?
Не могу найти на него документацию. Есть несколько ссылок на него здесь, но нет шага- пошаговый пример/учебник о том, как его использовать.
Как использовать встроенный проектор, включенный в Tensorboard?
Не могу найти на него документацию. Есть несколько ссылок на него здесь, но нет шага- пошаговый пример/учебник о том, как его использовать.
Насколько мне известно, это единственная документация по внедрению визуализации на веб-сайте 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)
Что дает нам:
embedding.metadata_path
должно быть os.path.basename(metadata)
- person oezguensi; 21.06.2019
К сожалению, я не могу найти более полную документацию. Ниже я собираю все сопутствующие ресурсы:
PS: Спасибо, что проголосовали за меня. Теперь я могу разместить все ссылки.
Теперь вы можете легко использовать встроенный проектор в 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
Магия %tensorboard теперь снова работает правильно.
@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'))
Позже постараюсь сделать подробный мастер-класс.
Похоже, вы хотите получить раздел визуализации с t-SNE, работающим на TensorBoard. Как вы описали, API Tensorflow предоставил только самые необходимые команды в документе с практическими рекомендациями. а>.
Я загрузил свое рабочее решение с набором данных MNIST в мой репозиторий GitHub.
Исходный ответ Stackoverflow: Пример внедрения TensorBoard?