将 Tensorboard 嵌入元数据链接到检查点
Linking Tensorboard Embedding Metadata to checkpoint
我在 tensorflow 上使用 tflearn 包装器来构建模型,并想将元数据(标签)添加到生成的嵌入可视化中。有没有办法在运行之后将link一个metadata.tsv文件保存到一个检查点呢?
我在检查点摘要的日志目录中创建了一个 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 部分,希望创建元数据 link 而无需直接在 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)
下面是当前嵌入可视化的快照。注意空的元数据。有没有办法直接将所需的图元文件附加到此嵌入?
我遇到了同样的问题。 [编辑:]我让它工作的方法是创建一个子目录并将所有检查点文件放在那里,使用元数据文件的完整路径。 'trick' 是,如果你给 tensorboard --logdir 那个特定的目录,它会以某种方式解析元数据并在图中显示单词,而不仅仅是索引。缺点是,当您仅将基本日志目录用作 --logdir 时,将不再发现嵌入,因此您始终必须启动一个单独的张量板实例来查看嵌入。
这真的很烦人,我无法想象这是让它工作的唯一方法,但我花了几个小时才终于成功...
用你的 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 转换为 hex。
我遇到了同样的问题,现在已经解决了:)
基本上,您只需执行以下 3 个步骤:
- 保存模型检查点,假设ckeckpoint的目录是
ckp_dir
;
- 将 projector_config.pbtxt 和 metadata.tsv 放入
ckp_dir
;
- 运行
tensorboard --logdir=ckp_dir
然后单击嵌入选项卡
projector_config.pbtxt的内容是:
embeddings {
tensor_name: "embedding_name"
metadata_path: "metatdata.tsv"
}
这是 link 嵌入 metadata.tsv 的关键。在 tf.Session() 中,我们经常得到像 sess.run('embedding_name:0')
这样的嵌入值。但是在 projector_config.pbtxt 中,我们只需输入 tensor_name: "embedding_name"
.
一般我们可以在projector_config.pbtxt中指定checkpoint路径和metadata_path这样我们就可以放置checkpoint, projector_config.pbtxt 和 metadata.tsv 在不同的目录中。但我认为这太复杂了。我就是按照上面的方法解决的。
the result shown here
我在 tensorflow 上使用 tflearn 包装器来构建模型,并想将元数据(标签)添加到生成的嵌入可视化中。有没有办法在运行之后将link一个metadata.tsv文件保存到一个检查点呢?
我在检查点摘要的日志目录中创建了一个 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 部分,希望创建元数据 link 而无需直接在 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)
下面是当前嵌入可视化的快照。注意空的元数据。有没有办法直接将所需的图元文件附加到此嵌入?
我遇到了同样的问题。 [编辑:]我让它工作的方法是创建一个子目录并将所有检查点文件放在那里,使用元数据文件的完整路径。 'trick' 是,如果你给 tensorboard --logdir 那个特定的目录,它会以某种方式解析元数据并在图中显示单词,而不仅仅是索引。缺点是,当您仅将基本日志目录用作 --logdir 时,将不再发现嵌入,因此您始终必须启动一个单独的张量板实例来查看嵌入。
这真的很烦人,我无法想象这是让它工作的唯一方法,但我花了几个小时才终于成功...
用你的 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 转换为 hex。
我遇到了同样的问题,现在已经解决了:)
基本上,您只需执行以下 3 个步骤:
- 保存模型检查点,假设ckeckpoint的目录是
ckp_dir
; - 将 projector_config.pbtxt 和 metadata.tsv 放入
ckp_dir
; - 运行
tensorboard --logdir=ckp_dir
然后单击嵌入选项卡
projector_config.pbtxt的内容是:
embeddings {
tensor_name: "embedding_name"
metadata_path: "metatdata.tsv"
}
这是 link 嵌入 metadata.tsv 的关键。在 tf.Session() 中,我们经常得到像 sess.run('embedding_name:0')
这样的嵌入值。但是在 projector_config.pbtxt 中,我们只需输入 tensor_name: "embedding_name"
.
一般我们可以在projector_config.pbtxt中指定checkpoint路径和metadata_path这样我们就可以放置checkpoint, projector_config.pbtxt 和 metadata.tsv 在不同的目录中。但我认为这太复杂了。我就是按照上面的方法解决的。
the result shown here