web-dev-qa-db-fra.com

Comment visualiser un résumé du tenseur dans le tenseur

J'essaie de visualiser un résumé du tenseur dans tensorboard. Cependant, je ne vois pas du tout le résumé du tenseur dans le tableau. Voici mon code:

        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)

où out est un tenseur multidimensionnel. Je suppose qu'il doit y avoir quelque chose qui ne va pas avec mon code. J'ai probablement utilisé la fonction tensor_summary de manière incorrecte.

9
Zhao

Ce que vous faites est de créer une opération de synthèse, mais vous ne l'invoquez pas et n'écrivez pas le résumé (voir documentation ) . Pour créer réellement un résumé, vous devez procéder comme suit:

# 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)

Écrire explicitement un résumé (les deux dernières lignes) n’est nécessaire que si vous n’avez pas d’aide de niveau supérieur comme un Supervisor . Sinon, vous invoquez 

sv.summary_computed(sess, summary_str)

et le superviseur s'en occupera.

Plus d'infos, voir aussi: Comment créer manuellement un tf.Summary ()

4
Michael Gygli

Je ne suis pas sûr que ce soit évident, mais vous pouvez utiliser quelque chose comme:

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])

au cas où vous sachiez qu'il s'agit d'un tenseur «en forme de matrice» à l'avance.

0
Patrick

J'espère une solution de contournement qui réalise ce que vous voulez. ..

Si vous souhaitez afficher les valeurs de tenseur, vous pouvez les convertir à l'aide de as_string, puis utilisez summary.text. Les valeurs apparaîtront dans l'onglet texte du tensorboard.

Pas essayé avec les tenseurs 3D, mais n'hésitez pas à couper en fonction des besoins.

extrait de code, qui inclut l’utilisation de l’insertion d’une instruction print pour obtenir également une sortie de la console.

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

0
Graham Monkman