为什么 TensorBoard 显示错误的余弦距离?
Why does the TensorBoard display the wrong cosine distance?
我想在 TensorBoard 的投影仪中可视化词嵌入,但余弦距离似乎不正确。
如果我通过 sklearn 计算余弦距离,我会得到不同的结果。
我是不是用错了 TensorBoard Projector?
张量板:
https://i.imgur.com/2hRtXym.png
Sklearn:
https://i.imgur.com/49OaiEU.png
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')
emb_arr = []
arr = []
# category -> dictionary
# category["Category 1"] -> array([[...,...,...,...,]]) # 300 dimensions
for category in category_embeddings:
arr.appendcategory_embeddings[category][0])
embds_arr = np.asarray(arr)
with open(metadata, 'w', encoding="utf-8") as metadata_file:
for key in category_embeddings.keys():
metadata_file.write(key + "\n")
embds = tf.Variable(embds_arr, name='embeds')
with tf.Session() as sess:
saver = tf.train.Saver([embds])
sess.run(embds.initializer)
saver.save(sess, os.path.join(LOG_DIR, 'category.ckpt'))
config = projector.ProjectorConfig()
config.model_checkpoint_path = os.path.join(LOG_DIR, 'checkpoint')
config = projector.ProjectorConfig()
embedding = config.embeddings.add()
embedding.tensor_name = embds.name
embedding.metadata_path = metadata
projector.visualize_embeddings(tf.summary.FileWriter(LOG_DIR), config)
已解决,
我用不同的数据集和训练周期测试了它,它似乎是 TensorBoard 中的一个错误。
Sklearn returns 原始向量的正确结果 space 和 TensorBoard 可能计算与降维的距离。
我想在 TensorBoard 的投影仪中可视化词嵌入,但余弦距离似乎不正确。
如果我通过 sklearn 计算余弦距离,我会得到不同的结果。
我是不是用错了 TensorBoard Projector?
张量板: https://i.imgur.com/2hRtXym.png
Sklearn: https://i.imgur.com/49OaiEU.png
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')
emb_arr = []
arr = []
# category -> dictionary
# category["Category 1"] -> array([[...,...,...,...,]]) # 300 dimensions
for category in category_embeddings:
arr.appendcategory_embeddings[category][0])
embds_arr = np.asarray(arr)
with open(metadata, 'w', encoding="utf-8") as metadata_file:
for key in category_embeddings.keys():
metadata_file.write(key + "\n")
embds = tf.Variable(embds_arr, name='embeds')
with tf.Session() as sess:
saver = tf.train.Saver([embds])
sess.run(embds.initializer)
saver.save(sess, os.path.join(LOG_DIR, 'category.ckpt'))
config = projector.ProjectorConfig()
config.model_checkpoint_path = os.path.join(LOG_DIR, 'checkpoint')
config = projector.ProjectorConfig()
embedding = config.embeddings.add()
embedding.tensor_name = embds.name
embedding.metadata_path = metadata
projector.visualize_embeddings(tf.summary.FileWriter(LOG_DIR), config)
已解决,
我用不同的数据集和训练周期测试了它,它似乎是 TensorBoard 中的一个错误。 Sklearn returns 原始向量的正确结果 space 和 TensorBoard 可能计算与降维的距离。