将Tensorboard嵌入元数据链接到检查点

时间:2017-01-17 22:25:01

标签: tensorflow metadata embedding tensorboard tflearn

我在tensorflow上使用tflearn包装器来构建模型,并希望将元数据(标签)添加到生成的嵌入可视化中。有没有办法在运行它之后将metadata.tsv文件链接到保存的检查点?

我在检查点摘要的logdir中创建了一个projector_config.pbtxt文件,其中metadata.tsv位于同一个文件夹中。配置如下所示:

embeddings {
  tensor_name: "Embedding/W"
  metadata_path: "C:/tmp/tflearn_logs/shallow_lstm/"
}

并使用文档中的代码创建 - https://www.tensorflow.org/how_tos/embedding_viz/

我已经注释了tf.Session部分,希望创建元数据链接,而无需直接在Session对象中这样做,但我不确定这是否可能

from tensorflow.contrib.tensorboard.plugins import projector
#with tf.Session() as sess:
config = projector.ProjectorConfig()
# One can add multiple embeddings.
embedding = config.embeddings.add()
embedding.tensor_name = 'Embedding/W'
# Link this tensor to its metadata file (e.g. labels).
embedding.metadata_path = 'C:/tmp/tflearn_logs/shallow_lstm/'
# Saves a config file that TensorBoard will read during startup.
projector.visualize_embeddings(tf.summary.FileWriter('/tmp/tflearn_logs/shallow_lstm/'), config)

下面是当前嵌入可视化的快照。请注意空元数据。有没有办法直接将所需的元文件附加到此嵌入?

Embedding Visualization

3 个答案:

答案 0 :(得分:1)

使用projector_config.pbtxt

尝试此操作
embeddings {
  tensor_name: "Embedding/W"
  metadata_path: "$LOGDIR/metadata.tsv"
}

确保您的$LOGDIR与您在终端上拨打tensorboard --logdir=$LOGDIR时使用的路径相同;也就是说,它应该是相对于您当前的目录(所以它可能不应该包括C:/..)。还包括metadata_path

中的文件名

请告诉我这是否适合您。

我偶然发现同样的问题试图显示单词而不是word2vec tutorial的索引。要实现这一目标,projector_config.pbtxt应如下所示:

embeddings {
  tensor_name: "w_in"
  metadata_path: "$LOGDIR/vocab.txt"
}

您可能还想修改上面链接的代码中的save_vocab函数,因为它将unicode转换为十六进制。

答案 1 :(得分:1)

我遇到了同样的问题,现在已经解决了:)

基本上,您需要做的就是遵循3个步骤:

  1. 保存模型检查点,假设ckeckpoint的目录为ckp_dir;
  2. ckp_dir;
  3. 中放置 projector_config.pbtxt metadata.tsv
  4. 运行tensorboard --logdir=ckp_dir并点击嵌入标签
  5. projector_config.pbtxt 的内容是:

        embeddings {
          tensor_name: "embedding_name"
          metadata_path: "metatdata.tsv"
        }
    

    这是将嵌入链接到metadata.tsv的关键。在tf.Session()中,我们经常得到嵌入的值,如sess.run('embedding_name:0')。但是在 projector_config.pbtxt 中,我们只需输入tensor_name: "embedding_name"

    通常,我们可以在 projector_config.pbtxt 中指定检查点路径和metadata_path,以便我们可以放置 checkpoint projector_config.pbtxt 和< em> metadata.tsv 在不同的目录中。但我认为这太复杂了。我刚才解决了这个问题。

    the result shown here

答案 2 :(得分:-1)

我遇到了同样的问题。 [编辑:]我可以使其工作的方式是创建一个子目录并将所有检查点文件放在那里,使用元数据文件的完整路径。 &#39;诀窍&#39;那么如果你给tensorboard --logdir那个特定的目录,它会以某种方式解析元数据并在图中显示单词而不仅仅是索引。缺点是当你只使用基本日志目录作为--logdir时,就不再能找到嵌入了,所以你总是需要启动一个单独的张量板实例来查看嵌入。

这真的很烦人,我无法想象这是让它发挥作用的唯一方法,但我花了几个小时才终于工作了......