TensorBoard嵌入示例?

Pat*_*ick 18 embedding tensorflow tensorboard

我正在寻找一个张量嵌入示例,带有虹膜数据,例如嵌入式投影仪http://projector.tensorflow.org/

但不幸的是我找不到一个.有关如何在https://www.tensorflow.org/how_tos/embedding_viz/中执行此操作的一些信息

有人知道这个功能的基本教程吗?

基本:

1)设置保持嵌入的2D张量变量.

embedding_var = tf.Variable(....)
Run Code Online (Sandbox Code Playgroud)

2)定期将嵌入保存在LOG_DIR中.

3)将元数据与嵌入相关联.

Sam*_*mir 21

我使用了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"))
Run Code Online (Sandbox Code Playgroud)

然后在终端中运行此命令:

tensorboard --logdir=log
Run Code Online (Sandbox Code Playgroud)


nor*_*n_h 13

听起来你想要在TensorBoard上运行t-SNE的Visualization部分.如您所述,Tensorflow的API仅提供了操作方法文档中的基本命令.

我已将使用MNIST数据集的工作解决方案上传到我的GitHub仓库.

是的,它分为三个一般步骤:

  1. 为每个维度创建元数据.
  2. 将图像与每个维度相关联.
  3. 将数据加载到TensorFlow并将嵌入保存在LOG_DIR中.

TensorFlow r0.12版本仅包含通用详细信息.在官方源代码中我没有完整的代码示例.

我发现涉及的两个任务没有在如何记录中记录.

  1. 从源准备数据
  2. 将数据加载到 tf.Variable

虽然TensorFlow是为GPU的使用而设计的,但在这种情况下,我选择使用CPU生成t-SNE可视化,因为该过程占用的内存比我的MacBookPro GPU可访问的内存多.TensorFlow包含对MNIST数据集的API访问,因此我使用了它.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')
Run Code Online (Sandbox Code Playgroud)

创建元数据文件的过程是切割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))
Run Code Online (Sandbox Code Playgroud)

具有要关联的图像文件如操作方法中所述.我已将前10,000个MNIST图像的png文件上传到我的GitHub.

到目前为止,TensorFlow对我来说非常漂亮,它的计算速度快,文档齐全,而且对于我目前要做的任何事情来说,API看起来功能齐全.我期待在未来一年中使用自定义数据集生成更多可视化.这篇文章是从我的博客编辑的.祝你好运,请让我知道它是怎么回事.:)


Mal*_*lex 5

看看这个演讲"动手TensorBoard(TensorFlow Dev Summit 2017)" https://www.youtube.com/watch?v=eBbEDRsCmv4 它演示了在MNIST数据集上嵌入TensorBoard.

可以在此处找到演示的示例代码和幻灯片https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial