如何使用tensorboard嵌入投影仪?

Bru*_*ira 33 tensorboard

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

小智 57

据我所知,是关于在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'))
Run Code Online (Sandbox Code Playgroud)

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

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

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)
Run Code Online (Sandbox Code Playgroud)

这给了我们:

在此输入图像描述

  • @Wazy,我相信您现在已经发现了,但是所解释的总方差是通过从使用的特征向量中取出所有特征值之和的特征值之和来计算的。你想要更高的价值。较低的值意味着沿某些主轴的方差被投影到平坦的表面,并且在较低的嵌入可视化中不被考虑。 (2认同)

Kor*_*ich 18

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

PS:谢谢你的支持.现在我可以发布所有链接.


Alb*_*.W. 5

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

@Everyone
另外,张量板嵌入只是可视化已保存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'))

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