TensorBoard 嵌入示例?
TensorBoard Embedding Example?
我正在寻找一个张量板嵌入示例,例如带有虹膜数据的嵌入投影仪 http://projector.tensorflow.org/
但遗憾的是我找不到。 https://www.tensorflow.org/how_tos/embedding_viz/
中有关如何操作的一些信息
有人知道此功能的基本教程吗?
基础知识:
1) 设置一个保存嵌入的 2D 张量变量。
embedding_var = tf.Variable(....)
2) 定期将您的嵌入保存在 LOG_DIR.
中
3) 将元数据与您的嵌入相关联。
听起来您想在 TensorBoard 上使用 t-SNE 运行 获取可视化部分。如您所述,Tensorflow 的 API 仅在 how-to document.
中提供了最基本的命令
我已经将 MNIST 数据集的工作解决方案上传到 my GitHub repo。
是的,分为三个一般步骤:
- 为每个维度创建元数据。
- 将图像与每个维度相关联。
- 将数据加载到 TensorFlow 中并将嵌入保存在 LOG_DIR 中。
TensorFlow r0.12 版本仅包含通用详细信息。据我所知,官方源代码中没有完整的代码示例。
我发现操作方法中没有记录涉及的两个任务。
- 从源准备数据
- 正在将数据加载到
tf.Variable
虽然 TensorFlow 是为使用 GPU 而设计的,但在这种情况下,我选择使用 CPU 生成 t-SNE 可视化,因为该过程占用的内存比我的 MacBookPro GPU 可以访问的内存多。 API TensorFlow 包含对 MNIST 数据集的访问权限,因此我使用了它。 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 对于我目前要做的任何事情来说似乎在功能上都是完整的。我期待在来年使用自定义数据集生成更多可视化效果。此 post 是根据 my blog 编辑的。祝你好运,请告诉我进展如何。 :)
查看此演讲 "Hands-on TensorBoard (TensorFlow Dev Summit 2017)" https://www.youtube.com/watch?v=eBbEDRsCmv4 它演示了在 MNIST 数据集上嵌入 TensorBoard。
可以在此处找到演讲的示例代码和幻灯片 https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial
我用过 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
在 GitHub 存储库的 TensorFlow 中提出了一个问题:No real code example for using the tensorboard embedding tab #6322 (mirror)。
它包含一些有趣的指示。
如果有兴趣,一些使用 TensorBoard 嵌入来显示字符和单词嵌入的代码:
https://github.com/Franck-Dernoncourt/NeuroNER
示例:
仅供参考:
接受的答案对理解一般顺序非常有帮助:
- 为每个向量(样本)创建元数据
- 将图像(精灵)与每个矢量相关联
- 将数据加载到 TensorFlow 中并使用检查点和摘要编写器保存嵌入(注意路径在整个过程中保持一致)。
对我来说,基于 MNIST 的示例仍然过分依赖预训练数据和预生成的精灵和元数据文件。为了填补这个空白,我自己创建了一个这样的例子,并决定在这里分享给任何感兴趣的人——代码在 GitHub.
获取预训练嵌入并在张量板上可视化。
嵌入 -> 训练好的嵌入
metadata.tsv -> 元数据信息
max_size -> embedding.shape[0]
import tensorflow as tf
from tensorflow.contrib.tensorboard.plugins import projector
sess = tf.InteractiveSession()
with tf.device("/cpu:0"):
tf_embedding = tf.Variable(embedding, trainable = False, name = "embedding")
tf.global_variables_initializer().run()
path = "tensorboard"
saver = tf.train.Saver()
writer = tf.summary.FileWriter(path, sess.graph)
config = projector.ProjectorConfig()
embed = config.embeddings.add()
embed.tensor_name = "embedding"
embed.metadata_path = "metadata.tsv"
projector.visualize_embeddings(writer, config)
saver.save(sess, path+'/model.ckpt' , global_step=max_size )
$ 张量板 --logdir="tensorboard" --port=8080
这里是 link 官方指南。
https://www.tensorflow.org/versions/r1.1/get_started/embedding_viz
它说它最后更新于 2017 年 6 月。
我正在寻找一个张量板嵌入示例,例如带有虹膜数据的嵌入投影仪 http://projector.tensorflow.org/
但遗憾的是我找不到。 https://www.tensorflow.org/how_tos/embedding_viz/
中有关如何操作的一些信息有人知道此功能的基本教程吗?
基础知识:
1) 设置一个保存嵌入的 2D 张量变量。
embedding_var = tf.Variable(....)
2) 定期将您的嵌入保存在 LOG_DIR.
中3) 将元数据与您的嵌入相关联。
听起来您想在 TensorBoard 上使用 t-SNE 运行 获取可视化部分。如您所述,Tensorflow 的 API 仅在 how-to document.
中提供了最基本的命令我已经将 MNIST 数据集的工作解决方案上传到 my GitHub repo。
是的,分为三个一般步骤:
- 为每个维度创建元数据。
- 将图像与每个维度相关联。
- 将数据加载到 TensorFlow 中并将嵌入保存在 LOG_DIR 中。
TensorFlow r0.12 版本仅包含通用详细信息。据我所知,官方源代码中没有完整的代码示例。
我发现操作方法中没有记录涉及的两个任务。
- 从源准备数据
- 正在将数据加载到
tf.Variable
虽然 TensorFlow 是为使用 GPU 而设计的,但在这种情况下,我选择使用 CPU 生成 t-SNE 可视化,因为该过程占用的内存比我的 MacBookPro GPU 可以访问的内存多。 API TensorFlow 包含对 MNIST 数据集的访问权限,因此我使用了它。 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 对于我目前要做的任何事情来说似乎在功能上都是完整的。我期待在来年使用自定义数据集生成更多可视化效果。此 post 是根据 my blog 编辑的。祝你好运,请告诉我进展如何。 :)
查看此演讲 "Hands-on TensorBoard (TensorFlow Dev Summit 2017)" https://www.youtube.com/watch?v=eBbEDRsCmv4 它演示了在 MNIST 数据集上嵌入 TensorBoard。
可以在此处找到演讲的示例代码和幻灯片 https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial
我用过 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
在 GitHub 存储库的 TensorFlow 中提出了一个问题:No real code example for using the tensorboard embedding tab #6322 (mirror)。
它包含一些有趣的指示。
如果有兴趣,一些使用 TensorBoard 嵌入来显示字符和单词嵌入的代码: https://github.com/Franck-Dernoncourt/NeuroNER
示例:
仅供参考:
接受的答案对理解一般顺序非常有帮助:
- 为每个向量(样本)创建元数据
- 将图像(精灵)与每个矢量相关联
- 将数据加载到 TensorFlow 中并使用检查点和摘要编写器保存嵌入(注意路径在整个过程中保持一致)。
对我来说,基于 MNIST 的示例仍然过分依赖预训练数据和预生成的精灵和元数据文件。为了填补这个空白,我自己创建了一个这样的例子,并决定在这里分享给任何感兴趣的人——代码在 GitHub.
获取预训练嵌入并在张量板上可视化。
嵌入 -> 训练好的嵌入
metadata.tsv -> 元数据信息
max_size -> embedding.shape[0]
import tensorflow as tf
from tensorflow.contrib.tensorboard.plugins import projector
sess = tf.InteractiveSession()
with tf.device("/cpu:0"):
tf_embedding = tf.Variable(embedding, trainable = False, name = "embedding")
tf.global_variables_initializer().run()
path = "tensorboard"
saver = tf.train.Saver()
writer = tf.summary.FileWriter(path, sess.graph)
config = projector.ProjectorConfig()
embed = config.embeddings.add()
embed.tensor_name = "embedding"
embed.metadata_path = "metadata.tsv"
projector.visualize_embeddings(writer, config)
saver.save(sess, path+'/model.ckpt' , global_step=max_size )
$ 张量板 --logdir="tensorboard" --port=8080
这里是 link 官方指南。
https://www.tensorflow.org/versions/r1.1/get_started/embedding_viz
它说它最后更新于 2017 年 6 月。