Пример внедрения TensorBoard?
Я ищу пример встраивания тензограмм с данными ириса, например, как проектор внедрения http://projector.tensorflow.org/
Но, к сожалению, я не смог его найти. Немного информации о том, как это сделать в https://www.tensorflow.org/how_tos/embedding_viz/
Кто-нибудь знает базовое руководство для этой функции?
Основа:
1) Настройте 2D-тензорную переменную (-ы), которая содержит ваши вложения (-ы).
embedding_var = tf.Variable(....)
2) Периодически сохраняйте свои вложения в LOG_DIR.
3) Свяжите метаданные с вашим вложением.
Ответы
Ответ 1
Похоже, вы хотите получить раздел "Визуализация" с t-SNE, запущенным на TensorBoard. Как вы описали, API Tensorflow предоставил только основные необходимые команды в инструкции.
Ive загрузило мое рабочее решение с набором данных MNIST в мое репо GitHub.
Да, он разбит на три общих шага:
- Создайте метаданные для каждого измерения.
- Связать изображения с каждым размером.
- Загрузите данные в TensorFlow и сохраните вложения в LOG_DIR.
В выпуске TensorFlow r0.12 задействованы только общие данные. Нет полного кода, который я знаю в официальном исходном коде.
Я обнаружил, что были задействованы две задачи, которые не были описаны в инструкции.
- Подготовка данных из источника
- Загрузка данных в
tf.Variable
В то время как TensorFlow предназначен для использования графических процессоров, в этой ситуации я решил создать визуализацию t-SNE с процессором, так как процесс занял больше памяти, чем у моего MacBookPro. Доступ API к набору данных MNIST включен в TensorFlow, поэтому я использовал это. Данные MNIST поступают в виде структурированного массива numpy. Использование функции tf.stack
позволяет этому набору данных складываться в список тензоров, которые могут быть встроены в визуализацию. Следующий код содержит то, как я извлекал данные и настраивал переменную вложения TensorFlow.
with tf.device("/cpu:0"):
embedding = tf.Variable(tf.stack(mnist.test.images[:FLAGS.max_steps], axis=0), trainable=False, name='embedding')
Создание файла метаданных выполнялось с помощью нарезки массива 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))
Наличие файла образа для связи с ним соответствует описанию в инструкции. Я загрузил png файл первых 10 000 изображений MNIST в мой GitHub.
Пока TensorFlow работает красиво для меня, его вычислительная оперативность, хорошо документирована, и API представляется функционально полным для всего, что я собираюсь сделать на данный момент. Я с нетерпением ожидаю создания еще нескольких визуализаций с пользовательскими наборами данных в течение следующего года. Это сообщение было отредактировано мой блог. Удачи вам, пожалуйста, дайте мне знать, как это происходит.:)
Ответ 2
Я использовал FastText предварительно обученные векторы слов с помощью 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"))
Затем запустите эту команду в своем терминале:
tensorboard --logdir=log
Ответ 3
Посмотрите этот разговор "Практический TensorBoard (TensorFlow Dev Summit 2017)" https://www.youtube.com/watch?v=eBbEDRsCmv4 Он демонстрирует встраивание TensorBoard в наборе данных MNIST.
Пример кода и слайдов для разговора можно найти здесь https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial
Ответ 4
В репозитории TensorFlow в GitHub была поднята проблема: Нет реального примера кода для использования вкладки встраивания тензограмм # 6322 (mirror).
Он содержит несколько интересных указателей.
Если вас интересует какой-то код, который использует вложения TensorBoard для отображения вложений символов и слов:
https://github.com/Franck-Dernoncourt/NeuroNER
Пример:
FYI: Как выбрать, какую контрольную точку просматривать на вкладке вложений TensorBoard?
Ответ 5
Принятый ответ был очень полезен для понимания общей последовательности:
- Создание метаданных для каждого вектора (образец)
- Связанные изображения (спрайты) с каждым вектором
- Загрузите данные в TensorFlow и сохраните вложения с помощью контрольной точки и автора резюме (помните, что пути согласованы на протяжении всего процесса).
Для меня пример на основе MNIST по-прежнему слишком сильно полагался на предварительно подготовленные данные и предварительно сгенерированные файлы спрайтов и метаданных. Чтобы заполнить этот пробел, я сам создал такой пример и решил поделиться им здесь для всех, кого это интересует - код находится на GitHub и видео прогон на YouTube
Ответ 6
Сделать предварительные вложения и визуализировать его на тензоре.
встраивание → обученное вложение
metadata.tsv → информация о метаданных
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 = "тензорная доска" --port = 8080