TensorBoard嵌入示例?

时间:2016-12-21 08:35:30

标签: tensorflow embedding tensorboard

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

但不幸的是我无法找到一个。关于如何在https://www.tensorflow.org/how_tos/embedding_viz/

中执行此操作的一些信息

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

基础:

1)设置一个包含嵌入的2D张量变量。

embedding_var = tf.Variable(....)

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

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

7 个答案:

答案 0 :(得分:19)

我已将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

答案 1 :(得分:13)

听起来你想要在TensorBoard上运行t-SNE的Visualization部分。正如您所描述的,Tensorflow的API仅在how-to document中提供了基本命令。

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

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

  1. 为每个维度创建元数据。
  2. 将图像与每个维度相关联。
  3. 将数据加载到TensorFlow中并将嵌入保存在LOG_DIR中。
  4. TensorFlow r0.12版本仅包含通用详细信息。在官方源代码中我没有完整的代码示例。

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

    1. 从源准备数据
    2. 将数据加载到tf.Variable
    3. 虽然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')
      

      创建元数据文件已经完成了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))
      

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

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

答案 2 :(得分:5)

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

可以在https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial

找到演示的示例代码和幻灯片

答案 3 :(得分:3)

TensorFlow向GitHub存储库提出了一个问题:No real code example for using the tensorboard embedding tab #6322mirror)。

它包含一些有趣的指示。

如果有兴趣,可以使用TensorBoard嵌入来显示字符和单词嵌入的一些代码: https://github.com/Franck-Dernoncourt/NeuroNER

示例:

enter image description here

enter image description here

仅供参考:How can I select which checkpoint to view in TensorBoard's embeddings tab?

答案 4 :(得分:1)

接受的答案对于理解一般顺序非常有帮助:

  1. 为每个向量(样本)创建元数据
  2. 将图像(精灵)与每个向量相关联
  3. 将数据加载到TensorFlow并使用检查点和摘要编写器保存嵌入(请注意路径在整个过程中保持一致)。
  4. 对我来说,基于MNIST的例子仍然过分依赖预先训练的数据和预先生成的精灵&元数据文件。为填补这一空白,我自己创建了这样一个示例,并决定在此处与感兴趣的人分享 - 代码在GitHub上,视频直播在YouTube

    enter image description here

答案 5 :(得分:0)

进行预训练嵌入并在张量板上可视化。

嵌入 - >训练有素的嵌入

metadata.tsv - >元数据信息

max_size - > embedding.shape [0]

response_file = open('csvOutput{}.zip'.format(str(timestamp).encode('utf-8').strip()))

$ tensorboard --logdir =" tensorboard" --port = 8080

答案 6 :(得分:0)

这是官方指南的链接。

https://www.tensorflow.org/versions/r1.1/get_started/embedding_viz

它说它最近一次更新是2017年6月。