web-dev-qa-db-ja.com

Tensorboard Embedding Projectorの使用方法

Tensorboardに含まれている埋め込みプロジェクターに関するドキュメントはどこで入手できますか? ここ 、それへの参照がいくつかありますが、それを使用する方法に関する段階的な例/チュートリアルはありません。

32
Bruno Oliveira

私の知る限り、 this は、TensorFlow Webサイトでの視覚化の埋め込みに関する唯一のドキュメントです。コードスニペットは、初めてのユーザーにとってあまり有益ではないかもしれませんが、ここに使用例があります。

import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

LOG_DIR = 'logs'

mnist = input_data.read_data_sets('MNIST_data')
images = tf.Variable(mnist.test.images, name='images')

with tf.Session() as sess:
    saver = tf.train.Saver([images])

    sess.run(images.initializer)
    saver.save(sess, os.path.join(LOG_DIR, 'images.ckpt'))

ここでは、まずTensoFlow変数(images)を作成し、tf.train.Saverを使用して保存します。コードを実行した後、ブラウザでtensorboard --logdir=logsコマンドを発行し、localhost:6006を開くことでTensorBoardを起動できます。

PCA Visualization ただし、各データポイントが属する異なるクラスは表示されないため、この視覚化はあまり役に立ちません。各クラスを別のクラスと区別するには、いくつかのメタデータを提供する必要があります。

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')

mnist = input_data.read_data_sets('MNIST_data')
images = tf.Variable(mnist.test.images, name='images')

with open(metadata, 'w') as metadata_file:
    for row in mnist.test.labels:
        metadata_file.write('%d\n' % row)

with tf.Session() as sess:
    saver = tf.train.Saver([images])

    sess.run(images.initializer)
    saver.save(sess, os.path.join(LOG_DIR, 'images.ckpt'))

    config = projector.ProjectorConfig()
    # One can add multiple embeddings.
    embedding = config.embeddings.add()
    embedding.tensor_name = images.name
    # Link this tensor to its metadata file (e.g. labels).
    embedding.metadata_path = metadata
    # Saves a config file that TensorBoard will read during startup.
    projector.visualize_embeddings(tf.summary.FileWriter(LOG_DIR), config)

それは私たちに与えます:

enter image description here

55
enezhadian

悲しいことに、私はより包括的なドキュメントを見つけることができません。以下では、関連するすべてのリソースを収集します。

PS:私を支持してくれてありがとう。これで、すべてのリンクを投稿できます。

2019-08更新

PyTorchのSummaryWriterを使用して、ColabでEmbedding Projectorを簡単に使用できるようになりました

import numpy as np
from torch.utils.tensorboard import SummaryWriter
vectors = np.array([[0,0,1], [0,1,0], [1,0,0], [1,1,1]])
metadata = ['001', '010', '100', '111']  # labels
writer = SummaryWriter()
writer.add_embedding(vectors, metadata)
writer.close()
%load_ext tensorboard
%tensorboard --logdir=runs
18

えっさん
あなたの説明はとても良いです。ここで重要なのは、saver.save(...)を呼び出す前にすべての変数を初期化する必要があるということです。

@全員
また、テンソルボードの埋め込みは、保存されたVariableクラスのインスタンスを視覚化するだけです。それは言葉か画像か、他の何かかは気にしません。

公式のドキュメント https://www.tensorflow.org/get_started/embedding_viz は、それがマトリックスの方向の視覚化であることを指摘しておらず、私の意見では多くの混乱をもたらしました。

たぶん、マトリックスを視覚化することは何を意味するのでしょうか。マトリックスは、空間内のポイントのコレクションとして解釈できます。

形状(100、200)のマトリックスがある場合、100ポイントのコレクションとして解釈できます。各ポイントは200次元です。言い換えると、200次元の空間に100個のポイントがあります。

Word2vecの場合、100個の単語があり、各単語は200の長さのベクトルで表されます。 Tensorboard埋め込みは、PCAまたはT-SNEを使用してこのコレクション(マトリックス)を視覚化します。

したがって、任意のランダム行列を使用できます。形状(1080、1920)の画像を見ると、この画像の各行が1つのポイントであるかのように視覚化されます。

そうは言っても、saver = tf.train.Saver([a, _list, of, wanted, variables]) ...some code you may or may not have... saver.save(sess, os.path.join(LOG_DIR, 'filename.ckpt'))を保存するだけで、Variableクラスインスタンスの埋め込みを視覚化できます。

後で詳細なチュートリアルを作成してみます。

5
Albert X.W.

TensorBoardで実行されているt-SNEで視覚化セクションを取得したいようです。既に説明したように、TensorflowのAPIは、 how-to document で必要不可欠なコマンドのみを提供しています。

MNISTデータセットを含む作業ソリューションを my GitHubリポジトリにアップロードしました

元のStackoverflowの答え: TensorBoardの埋め込み例?

4
norman_h