web-dev-qa-db-ja.com

テンソルボードでテンソル要約を視覚化する方法

私はテンソルボードでテンソル要約を視覚化しようとしています。ただし、ボードにはテンソルの要約がまったく表示されません。これが私のコードです:

        out = tf.strided_slice(logits, begin=[self.args.uttWindowSize-1, 0], end=[-self.args.uttWindowSize+1, self.args.numClasses],
                               strides=[1, 1], name='softmax_truncated')
        tf.summary.tensor_summary('softmax_input', out)

ここで、outは多次元テンソルです。私のコードに何か問題があるに違いないと思います。おそらく私はtensor_summary関数が正しくありません。

12
Zhao

あなたがすることは、あなたは要約opを作成しますが、それを呼び出したり、要約を書き込んだりしません( documentation を参照)。実際に要約を作成するには、次のことを行う必要があります。

# Create a summary operation
summary_op = tf.summary.tensor_summary('softmax_input', out)

# Create the summary
summary_str = sess.run(summary_op)

# Create a summary writer
writer = tf.train.SummaryWriter(...)

# Write the summary
writer.add_summary(summary_str)

Supervisor のような上位レベルのヘルパーがない場合にのみ、要約(最後の2行)を明示的に書き込む必要があります。それ以外の場合は、

sv.summary_computed(sess, summary_str)

そして、監督者がそれを処理します。

詳細については、次も参照してください。 tf.Summary()を手動で作成する方法

5
Michael Gygli

うまくいけば、あなたが望むものを達成する回避策。 ..

テンソル値を表示する場合は、as_stringを使用してそれらを変換してから、summary.textを使用できます。テンソルボードのテキストタブに値が表示されます。

3Dテンソルでは試していませんが、必要に応じて自由にスライスしてください。

コードスニペット。これには、コンソール出力も取得するための印刷ステートメントの挿入の使用が含まれます。

predictions = tf.argmax(reshaped_logits, 1)
txtPredictions = tf.Print(tf.as_string(predictions),[tf.as_string(predictions)], message='predictions', name='txtPredictions')
txtPredictions_op = tf.summary.text('predictions', txtPredictions)

enter image description here

2
Graham Monkman

これがある程度明白かどうかはわかりませんが、次のようなものを使用できます

def make_tensor_summary(tensor, name='defaultTensorName'):
    for i in range(tensor.get_shape()[0]:
        for j in range(tensor.get_shape()[1]:
            tf.summary.scalar(Name + str(i) + '_' + str(j), tensor[i, j])

事前に「行列型」のテンソルであることがわかっている場合。

0
Patrick