2016-05-30 24 views
6

Al fine di registrare un valore semplice val ad una sintesi TensorBoard ho bisogno diCome si aggiunge un valore arbitrario a un riepilogo TensorFlow?

val = 5 
test_writer.add_summary(sess.run(tf.scalar_summary('test', val)), global_step) 

È

sess.run(tf.scalar_summary('test', val)) 

davvero necessario per ottenere val aggiunto come una sintesi?

+1

risposto a http://stackoverflow.com/questions/37902705/how-to-manually-create-a-tf- sommario – Peteris

+1

@Peteris: Sì, sembra un duplicato. – orome

+0

Controlla questa soluzione utile qui: https://stackoverflow.com/a/37915182/7048895 – Roi

risposta

6

si può costruire la sintesi da soli, come

from tensorflow.core.framework import summary_pb2 

value = summary_pb2.Summary.Value(tag="Accuracy", simple_value=0.95) 
summary = summary_pb2.Summary(value=[value]) 

è quindi possibile aggiungere summary utilizzando add_summary come nel codice.

5

Ecco un altro (forse un po 'più up-to-date), soluzione con la classe tf.Summary.FileWriter:

summary_writer = tf.summary.FileWriter(logdir=output_dir) 
value = tf.Summary.Value(tag='variable name', simple_value=value) 
summary_writer.add_event(summary=tf.summary.Event(tf.Summary([value]), 
         wall_time=time.time(), 
         step=global_step)) 

Quindi è possibile creare il SummarySaverHook come tale:

summary_hook = tf.train.SummarySaverHook(
    summary_writer=summary_writer, 
    summary_op=your_summary_op) 

che puoi passare alla tua MonitoredTrainingSession. Un esempio di summary_op è tf.summary.merge_all()

NOTA: è necessario attendere che FileWriter lo svuotino affinché appaia nel file degli eventi. È possibile forzarlo chiamando summary_writer.flush()


Una soluzione più semplice:

summary_writer = tf.summary.FileWriter(output_dir) 
summary = tf.Summary() 
summary.value.add(tag='name of var', simple_value=value) 
summary_writer.add_summary(summary, global_step) 
summary_writer.flush()