在哪里可以找到有关Tensorboard中包含的嵌入式投影仪的文档? Here,有一些引用,但没有关于如何使用它的分步示例/教程。
答案 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。
但是,这种可视化不是很有用,因为我们没有看到每个数据点所属的不同类。为了区分每个类,应该提供一些元数据:
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)
这给了我们:
答案 1 :(得分:13)
可悲的是,我找不到更全面的文档。下面我收集所有相关资源:
答案 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'))
我稍后会尝试制作详细的教程。