首页 > 解决方案 > 无法从 tensorboard 运行 tsne 以获取少量样本?

问题描述

我正在构建要查看的嵌入向量tensorboard(使用TSNE2D/3D 算法)

我的代码看起来:

    logdir = os.path.join("./logs/fit/l", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
    w = tf.summary.create_file_writer(logdir)

    projector_distances = train_distances.reshape(train_distances.shape[0], -1)
    weights = tf.Variable(projector_distances, name="latent_test_3")

    checkpoint = tf.train.Checkpoint(latent_test=weights)
    checkpoint.save(os.path.join(logdir, "embedding.ckpt"))

    with open(os.path.join(logdir, 'tags.tsv'), "w") as f:
        for tag in y_test:
            f.write("{}\n".format(tag))

    from tensorboard.plugins import projector
    config = projector.ProjectorConfig()
    embedding = config.embeddings.add()
    embedding.tensor_name = "latent_test/.ATTRIBUTES/VARIABLE_VALUE"
    embedding.metadata_path = 'tags.tsv'
    projector.visualize_embeddings(logdir, config)

tensorboard我可以查看的结果PCA,但TSNEUMAP不工作(什么都没有发生并且按钮被禁用):

在此处输入图像描述

更多信息:

train_distances: (938, 14, 14, 8)
projector_distances: (938, 1568)

我可以tsne从代码运行算法(对于相同的数据):

from sklearn.manifold import TSNE
model = TSNE(n_components=2, random_state=0)
y = model.fit_transform(projector_distances)

如果我使用更大的数据集(超过 1568 个样本(即样本数 >= 特征数),我可以从 tensorboard 查看结果。

  1. 怎么了 ?
  2. 为什么我可以tsne(从代码)运行小数据集,而我不能tsne从运行tensorboard

标签: tensorflowtensorboard

解决方案


我可以在 Tensorboard 上使用 T-SNE 进行我自己的嵌入。

在此处输入图像描述


推荐阅读