如何使用tensorboard嵌入投影仪?

时间:2016-11-28 16:28:36

标签: tensorboard

在哪里可以找到有关Tensorboard中包含的嵌入式投影仪的文档? Here,有一些引用,但没有关于如何使用它的分步示例/教程。

4 个答案:

答案 0 :(得分:49)

据我所知this是关于在TensorFlow网站上嵌入可视化的唯一文档。虽然代码片段对于初次使用的用户可能不是很有启发性,但这里是一个示例用法:

import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

LOG_DIR = 'logs'

mnist = input_data.read_data_sets('MNIST_data')
images = tf.Variable(mnist.test.images, name='images')

with tf.Session() as sess:
    saver = tf.train.Saver([images])

    sess.run(images.initializer)
    saver.save(sess, os.path.join(LOG_DIR, 'images.ckpt'))

首先,我们创建一个TensoFlow变量(images),然后使用tf.train.Saver保存它。执行代码后,我们可以通过发出tensorboard --logdir=logs命令并在浏览器中打开localhost:6006来启动TensorBoard。

PCA Visualization 但是,这种可视化不是很有用,因为我们没有看到每个数据点所属的不同类。为了区分每个类,应该提供一些元数据:

import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.contrib.tensorboard.plugins import projector


LOG_DIR = 'logs'
metadata = os.path.join(LOG_DIR, 'metadata.tsv')

mnist = input_data.read_data_sets('MNIST_data')
images = tf.Variable(mnist.test.images, name='images')

with open(metadata, 'w') as metadata_file:
    for row in mnist.test.labels:
        metadata_file.write('%d\n' % row)

with tf.Session() as sess:
    saver = tf.train.Saver([images])

    sess.run(images.initializer)
    saver.save(sess, os.path.join(LOG_DIR, 'images.ckpt'))

    config = projector.ProjectorConfig()
    # One can add multiple embeddings.
    embedding = config.embeddings.add()
    embedding.tensor_name = images.name
    # Link this tensor to its metadata file (e.g. labels).
    embedding.metadata_path = metadata
    # Saves a config file that TensorBoard will read during startup.
    projector.visualize_embeddings(tf.summary.FileWriter(LOG_DIR), config)

这给了我们:

enter image description here

答案 1 :(得分:13)

可悲的是,我找不到更全面的文档。下面我收集所有相关资源:

PS:感谢支持我。现在我可以发布所有链接。

答案 2 :(得分:4)

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

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

原始Stackoverflow回答:TensorBoard Embedding Example?

答案 3 :(得分:2)

@Ehsan
你的解释非常好。这里的关键是必须在saver.save(...)调用之前初始化每个变量。

@Everyone
此外,tensorboard嵌入只是可视化保存的Variable类的实例。它不关心它的单词或图像或其他任何东西。

官方文件https://www.tensorflow.org/get_started/embedding_viz并未指出它是矩阵的方向可视化,在我看来,它引入了很多混淆。

也许您想知道对矩阵进行可视化意味着什么。矩阵可以解释为空间中的点集合。

如果我有一个形状矩阵(100,200),我可以把它解释为100个点的集合,其中每个点有200个维度。换句话说,在200维空间中有100个点。

在word2vec的情况下,我们有100个单词,其中每个单词用200长度向量表示。 Tensorboard嵌入仅使用PCA或T-SNE来可视化此集合(矩阵)。

因此,您可以通过任何随机矩阵。如果您通过具有形状(1080,1920)的图像,它将可视化此图像的每一行,就好像它是单个点一样。

话虽如此,您可以通过简单地保存来可视化任何Variable类实例的嵌入 saver = tf.train.Saver([a, _list, of, wanted, variables]) ...some code you may or may not have... saver.save(sess, os.path.join(LOG_DIR, 'filename.ckpt'))

我稍后会尝试制作详细的教程。