web-dev-qa-db-ja.com

TensorBoard埋め込みの例?

埋め込みプロジェクタのような虹彩データを使用したテンソルボード埋め込みの例を探しています http://projector.tensorflow.org/

しかし、残念ながら私はそれを見つけることができませんでした。 https://www.tensorflow.org/how_tos/embedding_viz/ でそれを行う方法に関するほんの少しの情報

誰かがこの機能の基本的なチュートリアルを知っていますか?

基本:

1)埋め込みを保持する2Dテンソル変数を設定します。

embedding_var = tf.Variable(....)

2)埋め込みを定期的にLOG_DIRに保存します。

3)メタデータを埋め込みに関連付けます。

18
Patrick

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

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

はい、それは3つの一般的なステップに分けられます:

  1. 各ディメンションのメタデータを作成します。
  2. 画像を各次元に関連付けます。
  3. データをTensorFlowにロードし、埋め込みをLOG_DIRに保存します。

TensorFlow r0.12リリースには、一般的な詳細のみが含まれています。公式ソースコード内で知っている完全なコード例はありません。

方法に記載されていないタスクが2つあることがわかりました。

  1. ソースからのデータの準備
  2. tf.Variableへのデータの読み込み

TensorFlowはGPUを使用するように設計されていますが、この状況では、プロセスがMacBookPro GPUがアクセスできるよりも多くのメモリを占有するため、CPUでt-SNE視覚化を生成することにしました。 MNISTデータセットへのAPIアクセスはTensorFlowに含まれているため、それを使用しました。 MNISTデータは、構造化されたnumpy配列として提供されます。 tf.stack関数を使用すると、このデータセットを視覚化に埋め込むことができるテンソルのリストに積み重ねることができます。次のコードには、データを抽出し、TensorFlow埋め込み変数を設定する方法が含まれています。

with tf.device("/cpu:0"):
    embedding = tf.Variable(tf.stack(mnist.test.images[:FLAGS.max_steps], axis=0), trainable=False, name='embedding')

メタデータファイルの作成は、numpy配列のスライスで実行されました。

def save_metadata(file):
    with open(file, 'w') as f:
        for i in range(FLAGS.max_steps):
            c = np.nonzero(mnist.test.labels[::1])[1:][0][i]
            f.write('{}\n'.format(c))

関連付ける画像ファイルがあることは、ハウツーで説明されています。最初の10,000個のMNIST画像のpngファイルを my GitHub にアップロードしました。

これまでのところ、TensorFlowは私にとって見事に機能します。計算が速く、十分に文書化されており、APIは私が今やろうとしていることに対して機能的に完全なようです。来年、カスタムデータセットを使用して視覚化をさらに生成することを楽しみにしています。この投稿は my blog から編集されました。幸運を祈ります。どうなるか教えてください。 :)

13
norman_h

TensorBoardで FastTextの事前学習済みのWordベクトル を使用しました。

import os
import tensorflow as tf
import numpy as np
import fasttext
from tensorflow.contrib.tensorboard.plugins import projector

# load model
Word2vec = fasttext.load_model('wiki.en.bin')

# create a list of vectors
embedding = np.empty((len(Word2vec.words), Word2vec.dim), dtype=np.float32)
for i, Word in enumerate(Word2vec.words):
    embedding[i] = Word2vec[Word]

# setup a TensorFlow session
tf.reset_default_graph()
sess = tf.InteractiveSession()
X = tf.Variable([0.0], name='embedding')
place = tf.placeholder(tf.float32, shape=embedding.shape)
set_x = tf.assign(X, place, validate_shape=False)
sess.run(tf.global_variables_initializer())
sess.run(set_x, feed_dict={place: embedding})

# write labels
with open('log/metadata.tsv', 'w') as f:
    for Word in Word2vec.words:
        f.write(Word + '\n')

# create a TensorFlow summary writer
summary_writer = tf.summary.FileWriter('log', sess.graph)
config = projector.ProjectorConfig()
embedding_conf = config.embeddings.add()
embedding_conf.tensor_name = 'embedding:0'
embedding_conf.metadata_path = os.path.join('log', 'metadata.tsv')
projector.visualize_embeddings(summary_writer, config)

# save the model
saver = tf.train.Saver()
saver.save(sess, os.path.join('log', "model.ckpt"))

次に、ターミナルで次のコマンドを実行します。

tensorboard --logdir=log
20
Samir

この講演「ハンズオンTensorBoard(TensorFlow Dev Summit 2017)」をご覧ください https://www.youtube.com/watch?v=eBbEDRsCmv4 It MNISTデータセットへのTensorBoardの埋め込みを示します。

トークのサンプルコードとスライドはこちら https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial

5
Malex

TensorFlow to GitHubリポジトリで問題が発生しました: テンソルボード埋め込みタブ#6322を使用する実際のコード例はありませんmirror )。

興味深いポインターがいくつか含まれています。


興味がある場合、TensorBoard埋め込みを使用して文字およびWord埋め込みを表示するコード: https://github.com/Franck-Dernoncourt/NeuroNER

例:

enter image description here

enter image description here

参考: TensorBoardの[埋め込み]タブで表示するチェックポイントを選択するにはどうすればよいですか?

3

事前学習済みの埋め込みを取得し、テンソルボードで視覚化する。

埋め込み->訓練された埋め込み

metadata.tsv->メタデータ情報

max_size-> embedding.shape [0]

import tensorflow as tf
from tensorflow.contrib.tensorboard.plugins import projector

sess = tf.InteractiveSession()

with tf.device("/cpu:0"):
    tf_embedding = tf.Variable(embedding, trainable = False, name = "embedding")

tf.global_variables_initializer().run()
path = "tensorboard"
saver = tf.train.Saver()
writer = tf.summary.FileWriter(path, sess.graph)
config = projector.ProjectorConfig()
embed = config.embeddings.add()
embed.tensor_name = "embedding"
embed.metadata_path = "metadata.tsv"
projector.visualize_embeddings(writer, config)
saver.save(sess, path+'/model.ckpt' , global_step=max_size )

$ tensorboard --logdir = "tensorboard" --port = 8080

1
Prakhar Agarwal

受け入れられた答えは、一般的なシーケンスを理解するのに非常に役立ちました。

  1. 各ベクトルのメタデータを作成(サンプル)
  2. 画像(スプライト)を各ベクトルに関連付ける
  3. データをTensorFlowに読み込み、チェックポイントとサマリーライターを使用して埋め込みを保存します(プロセス全体でパスが一貫していることに注意してください)。

私にとって、MNISTベースの例は、事前に訓練されたデータと事前に生成されたスプライトとメタデータファイルに依拠しすぎていました。このギャップを埋めるために、私はそのような例を自分で作成し、興味がある人のためにここでそれを共有することにしました-コードは GitHub にあり、ビデオのランスルーは YouTube にあります

enter image description here

1
Altermarkive

公式ガイドへのリンクはこちらです。

https://www.tensorflow.org/versions/r1.1/get_started/embedding_viz

2017年6月に最後に更新されたと書かれています。

0
I. Cantrell