私はテンソルボードでテンソル要約を視覚化しようとしています。ただし、ボードにはテンソルの要約がまったく表示されません。これが私のコードです:
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
関数が正しくありません。
あなたがすることは、あなたは要約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()を手動で作成する方法
うまくいけば、あなたが望むものを達成する回避策。 ..
テンソル値を表示する場合は、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)
これがある程度明白かどうかはわかりませんが、次のようなものを使用できます
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])
事前に「行列型」のテンソルであることがわかっている場合。