我正在寻找一个张量板嵌入示例,其中包含虹膜数据,例如嵌入式投影仪http://projector.tensorflow.org/
但不幸的是我无法找到一个。关于如何在https://www.tensorflow.org/how_tos/embedding_viz/
中执行此操作的一些信息有人知道此功能的基本教程吗?
基础:
1)设置一个包含嵌入的2D张量变量。
embedding_var = tf.Variable(....)
2)定期将嵌入保存在LOG_DIR中。
3)将元数据与嵌入相关联。
答案 0 :(得分:19)
我已将FastText's pre-trained word vectors与TensorBoard一起使用。
import os
import tensorflow as tf
import numpy as np
import fasttext
from tensorflow.contrib.tensorboard.plugins import projector
# load model
word2vec = fasttext.load_model('wiki.en.bin')
# create a list of vectors
embedding = np.empty((len(word2vec.words), word2vec.dim), dtype=np.float32)
for i, word in enumerate(word2vec.words):
embedding[i] = word2vec[word]
# setup a TensorFlow session
tf.reset_default_graph()
sess = tf.InteractiveSession()
X = tf.Variable([0.0], name='embedding')
place = tf.placeholder(tf.float32, shape=embedding.shape)
set_x = tf.assign(X, place, validate_shape=False)
sess.run(tf.global_variables_initializer())
sess.run(set_x, feed_dict={place: embedding})
# write labels
with open('log/metadata.tsv', 'w') as f:
for word in word2vec.words:
f.write(word + '\n')
# create a TensorFlow summary writer
summary_writer = tf.summary.FileWriter('log', sess.graph)
config = projector.ProjectorConfig()
embedding_conf = config.embeddings.add()
embedding_conf.tensor_name = 'embedding:0'
embedding_conf.metadata_path = os.path.join('log', 'metadata.tsv')
projector.visualize_embeddings(summary_writer, config)
# save the model
saver = tf.train.Saver()
saver.save(sess, os.path.join('log', "model.ckpt"))
然后在终端中运行此命令:
tensorboard --logdir=log
答案 1 :(得分:13)
听起来你想要在TensorBoard上运行t-SNE的Visualization部分。正如您所描述的,Tensorflow的API仅在how-to document中提供了基本命令。
我已将使用MNIST数据集的工作解决方案上传到my GitHub repo。
是的,它分为三个一般步骤:
TensorFlow r0.12版本仅包含通用详细信息。在官方源代码中我没有完整的代码示例。
我发现涉及的两个任务没有在如何记录中记录。
tf.Variable
虽然TensorFlow是为GPU的使用而设计的,但在这种情况下,我选择使用CPU生成t-SNE可视化,因为该过程占用的内存比我的MacBookPro GPU可以访问的内存多。 TensorFlow包含对MNIST数据集的API访问,因此我使用了它。 MNIST数据是一个结构化的numpy数组。使用tf.stack
功能可以将此数据集堆叠到可以嵌入到可视化中的张量列表中。以下代码包含我如何提取数据和设置TensorFlow嵌入变量。
with tf.device("/cpu:0"):
embedding = tf.Variable(tf.stack(mnist.test.images[:FLAGS.max_steps], axis=0), trainable=False, name='embedding')
创建元数据文件已经完成了numpy数组的切片。
def save_metadata(file):
with open(file, 'w') as f:
for i in range(FLAGS.max_steps):
c = np.nonzero(mnist.test.labels[::1])[1:][0][i]
f.write('{}\n'.format(c))
拥有要关联的图像文件如操作方法中所述。我已将前10,000个MNIST图像的png文件上传到my GitHub。
到目前为止,TensorFlow对我来说非常漂亮,它的计算速度快,文档齐全,而且对于我目前要做的任何事情来说,API似乎功能齐全。我期待在未来一年中使用自定义数据集生成更多可视化。这篇文章是从my blog编辑的。祝你好运,请让我知道它是怎么回事。 :)
答案 2 :(得分:5)
查看此演讲"动手TensorBoard(TensorFlow Dev Summit 2017)" https://www.youtube.com/watch?v=eBbEDRsCmv4它演示了在MNIST数据集上嵌入TensorBoard。
可以在https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial
找到演示的示例代码和幻灯片答案 3 :(得分:3)
TensorFlow向GitHub存储库提出了一个问题:No real code example for using the tensorboard embedding tab #6322(mirror)。
它包含一些有趣的指示。
如果有兴趣,可以使用TensorBoard嵌入来显示字符和单词嵌入的一些代码: https://github.com/Franck-Dernoncourt/NeuroNER
示例:
仅供参考:How can I select which checkpoint to view in TensorBoard's embeddings tab?
答案 4 :(得分:1)
接受的答案对于理解一般顺序非常有帮助:
答案 5 :(得分:0)
进行预训练嵌入并在张量板上可视化。
嵌入 - >训练有素的嵌入
metadata.tsv - >元数据信息
max_size - > embedding.shape [0]
response_file = open('csvOutput{}.zip'.format(str(timestamp).encode('utf-8').strip()))
$ tensorboard --logdir =" tensorboard" --port = 8080
答案 6 :(得分:0)