TensorBoard嵌入可视化工具不显示标签

时间:2017-08-11 15:48:28

标签: python-3.x tensorflow pca tensorboard word-embedding

我尝试使用TensorBoard embedding visualizer来表示我刚刚生成的一组7307动词嵌入,但当我选择启用3d标签模式时,绘制的点会消失。

这是我的代码:

def plot(tsne_matrix, labels_path):

PATH  = os.getcwd()
LOG_DIR = PATH
metadata = os.path.join(LOG_DIR, labels_path)

# Setup a 2D tensor that holds the embeddings
words = tf.Variable(tsne_matrix, name = "words")

with tf.Session() as session:

    # Periodically save the model variables in a checkpoint in LOG_DIR.
    saver = tf.train.Saver([words])

    session.run(words.initializer)
    saver.save(session, os.path.join(LOG_DIR, "model.ckpt"))

    config = projector.ProjectorConfig()
    embedding = config.embeddings.add()
    embedding.tensor_name = words.name
    embedding.metadata_path = metadata
    summary_writer = tf.summary.FileWriter(LOG_DIR)
    projector.visualize_embeddings(summary_writer, config)

我想要使用的元数据只包含嵌入的名称(在我的情况下是动词)。它们存储在带有其他列表的字典中的列表中,因此我使用此函数将它们加载到tsv文件(所需格式):

# Extract list of labels:
def labels2tsv(name, path):
    output = json2dict("output_parsed.json")
    if name == 'verbs':
        labels_list = list(output["verbs"].keys())
    elif name == 'objects':
        labels_list = list(output["objects"].keys())

    with open(path, 'w') as f:
        wr = csv.writer(f, delimiter='\t')
        wr.writerow(str(labels_list))

我执行的代码是:

# obtain labels
labels2tsv('verbs', 'verbs_metadata.tsv')
labels2tsv('objects', 'objects_metadata.tsv')

# plotting
tsne_verbs = np.load('verbs_tsne.npy')
plot(tsne_verbs, "verbs_metadata.tsv")

最后,我通过命令tensorboard --logdir=LOG_DIR访问TensorBoard。

生成的projector_config.pbtxt文件(也在LOG_DIR中)包含以下内容:

embeddings {
  tensor_name: "Variable:0"
  metadata_path: "verbs_metadata.tsv"
}

我猜这些点消失了,因为我没有做正确的元数据关联,但我无法看到错误。它也会在Chrome和Firefox上崩溃。

0 个答案:

没有答案