Tensorboard для встраивания проектор не работает. (PCA участок пуст.) - PullRequest
0 голосов
/ 03 сентября 2018

Я реализую простое встраивание word2vec.

Я хочу визуализировать результат встраивания, используя проектор встраивания тензорной доски.

Я использовал gensim.models.word2vec для обработки встраивания слов и тензорную доску для визуализации векторного пространства.

Все 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)

И мой результат в ноутбуке: фотография

...