python - guide - TensorFlow-¿Importando datos desde un archivo TensorBoard TFEvent?
tensorflow graph example (5)
He ejecutado varias sesiones de entrenamiento con diferentes gráficos en TensorFlow. Los resúmenes que preparé muestran resultados interesantes en la capacitación y validación. Ahora, me gustaría tomar los datos que he guardado en los registros de resumen y realizar un análisis estadístico y en el gráfico general y ver los datos de resumen de diferentes maneras. ¿Existe alguna forma de acceder fácilmente a estos datos?
Más específicamente, ¿hay alguna forma integrada de leer un registro de TFEvent nuevamente en Python?
Si no hay una forma sencilla de hacerlo, TensorFlow declara que todos sus formatos de archivo son archivos protobuf . Desde mi entendimiento de protobufs (que es limitado), creo que podría extraer estos datos si tengo la especificación del protocolo TFEvent. ¿Hay una manera fácil de conseguir esto? Muchas gracias
Aquí hay un ejemplo completo para obtener valores de un escalar. Puede ver la especificación del mensaje para el mensaje Evento protobuf tf.Summary
import tensorflow as tf
for event in tf.train.summary_iterator(''runs/easy_name/events.out.tfevents.1521590363.DESKTOP-43A62TM''):
for value in event.summary.value:
print(value.tag)
if value.HasField(''simple_value''):
print(value.simple_value)
Para leer un TFEvent puede obtener un iterador de Python que produce buffers de protocolo de eventos.
# This example supposes that the events file contains summaries with a
# summary value tag ''loss''. These could have been added by calling
# `add_summary()`, passing the output of a scalar summary op created with
# with: `tf.scalar_summary([''loss''], loss_tensor)`.
for e in tf.train.summary_iterator(path_to_events_file):
for v in e.summary.value:
if v.tag == ''loss'' or v.tag == ''accuracy'':
print(v.simple_value)
más información: summary_iterator
Puede usar el script serialize_tensorboard , que tomará un directorio de registro y escribirá todos los datos en formato json.
También puede usar un EventAccumulator para una API de Python conveniente (esta es la misma API que usa TensorBoard).
Simplemente puede utilizar:
tensorboard --inspect --event_file=myevents.out
o si desea filtrar un subconjunto específico de eventos del gráfico:
tensorboard --inspect --event_file=myevents.out --tag=loss
Si desea crear algo más personalizado, puede profundizar en el
/tensorflow/python/summary/event_file_inspector.py
para entender cómo analizar los archivos de eventos.
Como says Fabrizio, TensorBoard es una gran herramienta para visualizar el contenido de sus registros de resumen. Sin embargo, si desea realizar un análisis personalizado, puede usar la función says para recorrer todos los tf.Summary
protocolo tf.Event
y tf.Summary
en el registro:
for summary in tf.train.summary_iterator("/path/to/log/file"):
# Perform custom processing in here.