tsne projector online embeddings tensorflow embedding tensorboard

tensorflow - projector - Ejemplo de incrustación TensorBoard?



tensorflow online (5)

Estoy buscando un ejemplo de inserción de tensorboard, con datos de iris, por ejemplo, como el proyector de inclusión http://projector.tensorflow.org/

Pero desafortunadamente no pude encontrar uno. Solo un poco de información sobre cómo hacerlo en https://www.tensorflow.org/how_tos/embedding_viz/

¿Alguien conoce un tutorial básico para esta funcionalidad?

Lo esencial:

1) Configure una variable (s) de tensor 2D que contenga su (s) incrustación (es).

embedding_var = tf.Variable(....)

2) Guarde periódicamente sus incrustaciones en un LOG_DIR.

3) Asocia los metadatos con tu incrustación.


La respuesta aceptada fue muy útil para comprender la secuencia general:

  1. Crear metadatos para cada vector (muestra)
  2. Asociar imágenes (sprites) con cada vector
  3. Cargue los datos en TensorFlow y guarde las incrustaciones utilizando el punto de control y el escritor de resumen (tenga en cuenta que las rutas son consistentes durante todo el proceso).

Para mí, el ejemplo basado en MNIST todavía se basaba demasiado en datos previamente entrenados y archivos de sprite y metadatos pregenerados. Para llenar este vacío, creé un ejemplo de este tipo y decidí compartirlo aquí para cualquier persona interesada: el código está en GitHub y el video se encuentra en YouTube.



Parece que quieres obtener la sección de Visualización con t-SNE ejecutándose en TensorBoard. Como ha descrito, la API de Tensorflow solo ha proporcionado los comandos básicos en el documento instructivo.

He subido mi solución de trabajo con el conjunto de datos MNIST a mi repositorio de GitHub .

Sí, se divide en tres pasos generales:

  1. Crea metadatos para cada dimensión.
  2. Asocia imágenes con cada dimensión.
  3. Cargue los datos en TensorFlow y guarde las incrustaciones en un LOG_DIR.

Solo los detalles genéricos están incluidos en la versión TensorFlow r0.12. No hay un ejemplo de código completo que conozca dentro del código fuente oficial.

Descubrí que había dos tareas involucradas que no estaban documentadas en el cómo.

  1. Preparación de los datos de la fuente
  2. Cargando los datos en un tf.Variable

Aunque TensorFlow está diseñado para el uso de GPU, en esta situación opté por generar la visualización t-SNE con la CPU, ya que el proceso consumía más memoria de la que mi GPU MacBookPro tiene acceso. El acceso API al conjunto de datos MNIST se incluye con TensorFlow, así que lo usé. Los datos de MNIST vienen como una matriz numpy estructurada. El uso de la función tf.stack permite que este conjunto de datos se apile en una lista de tensores que pueden integrarse en una visualización. El siguiente código contiene cómo extraje los datos y configuré la variable de inserción de TensorFlow.

with tf.device("/cpu:0"): embedding = tf.Variable(tf.stack(mnist.test.images[:FLAGS.max_steps], axis=0), trainable=False, name=''embedding'')

La creación del archivo de metadatos se realizó con el corte de una matriz 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))

Tener un archivo de imagen para asociar es como se describe en el cómo hacerlo. He subido un archivo png de las primeras 10,000 imágenes de MNIST a mi GitHub .

Hasta ahora, TensorFlow funciona maravillosamente para mí, es computacionalmente rápido, bien documentado y la API parece estar funcionalmente completa para todo lo que estoy por hacer por el momento. Espero generar algunas visualizaciones más con conjuntos de datos personalizados durante el próximo año. Esta publicación fue editada desde mi blog . La mejor de las suertes para ti, por favor déjame saber cómo va. :)


Se ha planteado un problema en el repositorio de TensorFlow a GitHub: no hay un ejemplo de código real para usar la pestaña de inserción de tensorboard # 6322 ( espejo ).

Contiene algunos indicadores interesantes.

Si está interesado, algún código que use incrustaciones TensorBoard para mostrar incrustaciones de caracteres y palabras: https://github.com/Franck-Dernoncourt/NeuroNER

Ejemplo:

FYI: ¿Cómo puedo seleccionar qué punto de control ver en la pestaña de incrustaciones de TensorBoard?


He usado vectores de palabras preentregadas de FastText con 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"))

Luego ejecuta este comando en tu terminal:

tensorboard --logdir=log