埋め込みプロジェクタのような虹彩データを使用したテンソルボード埋め込みの例を探しています http://projector.tensorflow.org/
しかし、残念ながら私はそれを見つけることができませんでした。 https://www.tensorflow.org/how_tos/embedding_viz/ でそれを行う方法に関するほんの少しの情報
誰かがこの機能の基本的なチュートリアルを知っていますか?
基本:
1)埋め込みを保持する2Dテンソル変数を設定します。
embedding_var = tf.Variable(....)
2)埋め込みを定期的にLOG_DIRに保存します。
3)メタデータを埋め込みに関連付けます。
TensorBoardでt-SNEを実行して、視覚化セクションを取得したいようです。既に説明したように、TensorflowのAPIは、 how-to document で必要不可欠なコマンドのみを提供しています。
MNISTデータセットを含む作業ソリューションを my GitHubリポジトリ にアップロードしました。
はい、それは3つの一般的なステップに分けられます:
TensorFlow r0.12リリースには、一般的な詳細のみが含まれています。公式ソースコード内で知っている完全なコード例はありません。
方法に記載されていないタスクが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 から編集されました。幸運を祈ります。どうなるか教えてください。 :)
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
この講演「ハンズオンTensorBoard(TensorFlow Dev Summit 2017)」をご覧ください https://www.youtube.com/watch?v=eBbEDRsCmv4 It MNISTデータセットへのTensorBoardの埋め込みを示します。
トークのサンプルコードとスライドはこちら https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial
TensorFlow to GitHubリポジトリで問題が発生しました: テンソルボード埋め込みタブ#6322を使用する実際のコード例はありません ( mirror )。
興味深いポインターがいくつか含まれています。
興味がある場合、TensorBoard埋め込みを使用して文字およびWord埋め込みを表示するコード: https://github.com/Franck-Dernoncourt/NeuroNER
例:
事前学習済みの埋め込みを取得し、テンソルボードで視覚化する。
埋め込み->訓練された埋め込み
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
受け入れられた答えは、一般的なシーケンスを理解するのに非常に役立ちました。
私にとって、MNISTベースの例は、事前に訓練されたデータと事前に生成されたスプライトとメタデータファイルに依拠しすぎていました。このギャップを埋めるために、私はそのような例を自分で作成し、興味がある人のためにここでそれを共有することにしました-コードは GitHub にあり、ビデオのランスルーは YouTube にあります
公式ガイドへのリンクはこちらです。
https://www.tensorflow.org/versions/r1.1/get_started/embedding_viz
2017年6月に最後に更新されたと書かれています。