Pat*_*ick 18 embedding tensorflow tensorboard
我正在寻找一个张量嵌入示例,带有虹膜数据,例如嵌入式投影仪http://projector.tensorflow.org/
但不幸的是我找不到一个.有关如何在https://www.tensorflow.org/how_tos/embedding_viz/中执行此操作的一些信息
有人知道这个功能的基本教程吗?
基本:
1)设置保持嵌入的2D张量变量.
embedding_var = tf.Variable(....)
Run Code Online (Sandbox Code Playgroud)
2)定期将嵌入保存在LOG_DIR中.
3)将元数据与嵌入相关联.
Sam*_*mir 21
我使用了FastText预训练的单词向量和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"))
Run Code Online (Sandbox Code Playgroud)
然后在终端中运行此命令:
tensorboard --logdir=log
Run Code Online (Sandbox Code Playgroud)
nor*_*n_h 13
听起来你想要在TensorBoard上运行t-SNE的Visualization部分.如您所述,Tensorflow的API仅提供了操作方法文档中的基本命令.
我已将使用MNIST数据集的工作解决方案上传到我的GitHub仓库.
是的,它分为三个一般步骤:
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')
Run Code Online (Sandbox Code Playgroud)
创建元数据文件的过程是切割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))
Run Code Online (Sandbox Code Playgroud)
具有要关联的图像文件如操作方法中所述.我已将前10,000个MNIST图像的png文件上传到我的GitHub.
到目前为止,TensorFlow对我来说非常漂亮,它的计算速度快,文档齐全,而且对于我目前要做的任何事情来说,API看起来功能齐全.我期待在未来一年中使用自定义数据集生成更多可视化.这篇文章是从我的博客编辑的.祝你好运,请让我知道它是怎么回事.:)
看看这个演讲"动手TensorBoard(TensorFlow Dev Summit 2017)" https://www.youtube.com/watch?v=eBbEDRsCmv4 它演示了在MNIST数据集上嵌入TensorBoard.
可以在此处找到演示的示例代码和幻灯片https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial
| 归档时间: |
|
| 查看次数: |
20568 次 |
| 最近记录: |