2016-12-21 12 views
13

Я ищу для tensorboard вложения примера с данными радужной оболочки, например, как вложения проектор http://projector.tensorflow.org/Пример внедрения TensorBoard?

Но, к сожалению, я не смог найти. Немного информации о том, как это сделать в https://www.tensorflow.org/how_tos/embedding_viz/

Кто-нибудь знает базовое руководство по этой функции?

Основы:

1) Настройка 2D-переменная Тензор (s), который держит ваше вложение (ы).

embedding_var = tf.Variable(....) 

2) Периодически сохраняйте свои вложения в LOG_DIR.

3) Связанные метаданные с вашим внедрением.

ответ

10

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

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

Да, он разбивается на три основных этапа:

  1. создания метаданных для каждого измерения.
  2. Связанные изображения с каждым измерением.
  3. Загрузите данные в TensorFlow и сохраните вложения в LOG_DIR.

В комплект поставки TensorFlow r0.12 включены только общие детали. Нет полного кода, который я знаю в официальном исходном коде.

Я обнаружил, что были задействованы две задачи, которые не были зафиксированы в инструкции.

  1. Подготовка данных из источника
  2. Загрузка данных в tf.Variable

Хотя TensorFlow предназначен для использования графических процессоров, в этой ситуации я решил произвести визуализацию т-SNE с процессор, поскольку процесс занял больше памяти, чем у моего MacBookPro GPU. Доступ 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 из первых 10000 изображений MNIST в my GitHub.

До сих пор TensorFlow прекрасно работает для меня, он быстро вычисляется, хорошо документирован, и API представляется функционально полным для всего, что я собираюсь сделать на данный момент. Я с нетерпением ожидаю создания еще нескольких визуализаций с пользовательскими наборами данных в течение следующего года. Это сообщение было отредактировано my blog. Удачи вам, пожалуйста, дайте мне знать, как это происходит. :)

+1

Благодаря @norman_h, я буду проверять свой код и вернуться :). Я не работаю с изображениями, но с текстом csv для классификации данных. – Patrick

+0

@Patrick, тогда, я думаю, вы просто оставите строки, которые касаются спрайтов, и немного измените свой 'metadata.tsv'. –

+0

Спасибо! Он работает сейчас! – Patrick

5

Отъезд прочтения «Практический тензорный борт (TensorFlow Dev Summit 2017)» https://www.youtube.com/watch?v=eBbEDRsCmv4 Он демонстрирует встраивание TensorBoard в наборе данных MNIST.

Пример кода и слайды для разговора можно найти здесь https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial

+0

Не могли бы вы предоставить URL-адрес официального учебника? –

+0

Нет кода на приведенной выше ссылке .. несколько gists ... это все, что я ищу для рабочего примера визуализации визуализации Tensorboard с помощью t-sne/PCA, которая работает с TF 1.0, пока не повезло .. – dartdog

+0

Обновлены ссылку на исходный код для использования github. Должно быть проще ориентироваться. – Malex

12

Я использовал FastText's pre-trained word vectors с 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 
+0

wowwww благодарит много. Это очень помогает. – tnq177

3

Вопрос был поднят в TensorFlow на GitHub хранилище: No real code example for using the tensorboard embedding tab #6322 (mirror).

Он содержит несколько интересных указателей.


Если интересно, некоторый код, который использует TensorBoard вложения для отображения символов и слов вложения: https://github.com/Franck-Dernoncourt/NeuroNER

Пример:

enter image description here

enter image description here

FYI: How can I select which checkpoint to view in TensorBoard's embeddings tab?

+0

Соответствующий ответ Github https://github.com/tensorflow/tensorflow/issues/6322#issuecomment-298250484 – Eddie

0

Принятый ответ был очень полезным, чтобы понять общую последовательность:

  1. Создать метаданные для каждого вектора (образца)
  2. Ассоциированных изображений (спрайты) с каждым вектором
  3. загрузки данных в TensorFlow и сохранить вложения с использованием контрольной точки и автора резюме (помните, что пути согласованы на протяжении всего процесса).

Для меня пример на основе MNIST по-прежнему слишком полагался на предварительно подготовленные данные и предварительно сгенерированные спрайты & файлов метаданных. Чтобы восполнить этот пробел, я создал такой пример себя и решил поделиться им здесь для тех, кто заинтересован - код на GitHub и видео прогон на YouTube

enter image description here

0

Для того, чтобы pretrained вложения и визуализировать его на тензоре.

вложение -> обучен вложение

metadata.tsv -> Информация о метаданных

MAX_SIZE -> вложение.форма [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 = "tensorboard" --port = 8080