我正在实现简单的word2vec嵌入 .
我想用张量板嵌入式投影仪可视化嵌入结果 .
我使用gensim.models.word2vec来处理单词嵌入和tensorboard来可视化向量空间 .
已创建所有ckpt和元数据,tsv文件 .
我的桌面使用相同的代码显示完全正确的结果,但我的笔记本电脑没有显示相同的结果 .
在我的笔记本电脑中,只显示PCA矢量轴(x,y,z) . 不是矢量点 .
当我点击向量空间时,我无法做出任何反应 .
但是当我按标签搜索(在右侧窗口)时,邻居显示正确(与我桌面上的结果相同)
我已经尝试删除conda env并重新创建conda env和所需的库 .
我不知道我是如何解决这个问题的 .
我的代码:
import sys, os
from gensim.models import Word2Vec
import tensorflow as tf
import numpy as np
from tensorflow.contrib.tensorboard.plugins import projector
def visualize(model, output_path):
meta_file = "w2x_metadata.tsv"
placeholder = np.zeros((len(model.wv.index2word), 100))
with open(os.path.join(output_path,meta_file), 'wb') as file_metadata:
for i, word in enumerate(model.wv.index2word):
placeholder[i] = model[word]
if word == '':
print("Emply Line, should replecaed by any thing else, or will cause a bug of tensorboard")
file_metadata.write("{0}".format('<Empty Line>').encode('utf-8') + b'\n')
else:
file_metadata.write("{0}".format(word).encode('utf-8') + b'\n')
# define the model without training
sess = tf.InteractiveSession()
embedding = tf.Variable(placeholder, trainable = False, name = 'w2x_metadata')
tf.global_variables_initializer().run()
saver = tf.train.Saver()
writer = tf.summary.FileWriter(output_path, sess.graph)
# adding into projector
config = projector.ProjectorConfig()
embed = config.embeddings.add()
embed.tensor_name = 'w2x_metadata'
embed.metadata_path = meta_file
# Specify the width and height of a single thumbnail.
projector.visualize_embeddings(writer, config)
saver.save(sess, os.path.join(output_path,'w2x_metadata.ckpt'))
print('Run `tensorboard --logdir={0}` to run visualize result on tensorboard'.format(output_path))
if __name__ == "__main__":
try:
model_path = "w2v_model.model"
output_path = "tensorboard"
except:
print("Please provide model path and output path")
model = Word2Vec.load(model_path)
visualize(model, output_path)
我在笔记本电脑上的结果:picture