2017-09-06 10 views
0

テキスト処理では、次元削減後にデータベースワードをベクトルとして表示する(正確に理解すれば)embeddingが表示されます。 今、CNN経由で抽出された機能を表示するための方法はありますか?Tensorflowに特徴ベクトルを埋め込む

たとえば、CNNと電車とテストセットがあるとします。我々は列車でCNNを訓練したいと同時に、テンソルボードの埋め込み部分にCNNを介して抽出された(緻密層からの)対応するクラスラベルを見ることが望ましい。

この作業の目的は、すべてのバッチで入力データの機能を見て、それらがどれほど近いか遠いかを理解することです。最後に、訓練されたモデルでは、(ソフトマックスなどの)分類子の精度を知ることができます。

ご協力いただきありがとうございます。

答えて

1

私はTensorflowのドキュメントの助けを借りています。

1:

TensorBoardを実行し、すべての必要な情報をログに記録されていることを確認し、あなたの埋め込みを可視化するためTensorBoard: Visualizing Learning.

を参照する方法についての深さについては、あなたがする必要がある3つの事があります)埋め込みを保持する2Dテンソルを設定します。

embedding_var = tf.get_variable(....) 

2)定期的にLOG_DIRでのチェックポイントであなたのモデル変数を保存します。

saver = tf.train.Saver() 
saver.save(session, os.path.join(LOG_DIR, "model.ckpt"), step) 

3)あなたの埋め込みと(オプション)准メタデータ。

埋め込みに関連するメタデータ(ラベル、画像)がある場合は、それをLOG_DIRにprojector_config.pbtxtを直接保存するか、Python APIを使用してTensorBoardに伝えることができます。例えば

、以下projector_config.ptxt関連付け$ LOG_DIR/metadata.tsvに格納されたメタデータをword_embeddingテンソル:

embeddings { 
    tensor_name: 'word_embedding' 
    metadata_path: '$LOG_DIR/metadata.tsv' 
} 

同じ設定は、次のコードスニペットを使用してプログラム的に生成することができます

from tensorflow.contrib.tensorboard.plugins import projector 

# Create randomly initialized embedding weights which will be trained. 
vocabulary_size = 10000 
embedding_size = 200 
embedding_var = tf.get_variable('word_embedding', [vocabulary_size, 
embedding_size]) 

# Format: tensorflow/tensorboard/plugins/projector/projector_config.proto 
config = projector.ProjectorConfig() 

# You can add multiple embeddings. Here we add only one. 
embedding = config.embeddings.add() 
embedding.tensor_name = embedding_var.name 
# Link this tensor to its metadata file (e.g. labels). 
embedding.metadata_path = os.path.join(LOG_DIR, 'metadata.tsv') 

#Use the same LOG_DIR where you stored your checkpoint. 
summary_writer = tf.summary.FileWriter(LOG_DIR) 

# The next line writes a projector_config.pbtxt in the LOG_DIR. TensorBoard will 
# read this file during startup. 
projector.visualize_embeddings(summary_writer, config) 
関連する問題