Cómo crear manualmente un tf.Resumen()


A menudo quiero registrar variables de python opposed en lugar de tensores tf.

En los documentos dice que "puede pasar un búfer de protocolo tf.Summary que rellene con sus propios datos", pero no hay documentos para tf.Summary y no pude averiguar cómo usarlo.

¿Alguien sabe cómo crear un resumen escalar de esta manera?

 27
Author: Carles Gelada, 2016-06-19

3 answers

Puede crear un objeto tf.Summary en su programa Python y escribirlo en el mismo tf.summary.FileWriter objeto que toma los resúmenes producidos por TensorFlow utilizando el SummaryWriter.add_summary() método.

La clase tf.Summary es una envoltura de búfer de protocolo de Python para el búfer de protocolo Summary . Cada Summary contiene una lista de tf.Summary.Value búferes de protocolo, que cada uno tiene una etiqueta y un valor "simple" (escalar de punto flotante), una imagen , una histograma, o un fragmento de audio . Por ejemplo, puede generar un resumen escalar a partir de un objeto Python de la siguiente manera:

writer = tf.train.SummaryWriter(...)
value = 37.0
summary = tf.Summary(value=[
    tf.Summary.Value(tag="summary_tag", simple_value=value), 
])
writer.add_summary(summary)
 44
Author: mrry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-13 18:29:00

Si desea registrar un valor de python, debe crear un marcador de posición que debe alimentar al ejecutar tf.Summary op.

Aquí hay un código recortado

value_ = tf.placeholder(tf.float32, [])
summary_op = tf.scalar_summary("value_log", value_)
my_python_variable = 10
# define everything else you need...
# ...
with tf.Session() as sess:
    for i in range(0, 10):
        sess.run(summary_op, feed_dict={value_: my_python_variable*i})
 4
Author: nessuno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-19 08:36:00

Necesitaba hacer muchas actualizaciones a la variable de resumen personalizada durante el entrenamiento, así que implementé la mía de la siguiente manera:

Antes del bucle:

writer = tf.summary.FileWriter(log_folder)
accuracy = None
accuracy_summary = tf.Summary()
accuracy_summary.value.add(tag='accuracy', simple_value=accuracy)

Dentro del bucle:

if i%20000 == 0:
    accuracy = get_accuracy()
    accuracy_summary.value[0].simple_value = accuracy
    writer.add_summary(accuracy_summary, i)

Asumo que los índices de value están en el orden en que se agregaron las variables al resumen.

 2
Author: KalenGi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-07 09:13:34