¿Cómo lees los archivos Tensorboard programáticamente?

¿Cómo se puede escribir una secuencia de comandos de Python para leer los archivos de registro de Tensorboard, extrayendo la pérdida y la precisión y otros datos numéricos, sin iniciar el tensorboard --logdir=... GUI tensorboard --logdir=... ?

Puedes usar las clases de Python de TensorBoard o el script para extraer los datos:

¿Cómo puedo exportar datos desde TensorBoard?

Si desea exportar datos para visualizarlos en otro lugar (por ejemplo, iPython Notebook), eso también es posible. Puede depender directamente de las clases subyacentes que TensorBoard usa para cargar datos: python/summary/event_accumulator.py (para cargar datos de una sola ejecución) o python/summary/event_multiplexer.py (para cargar datos de múltiples ejecuciones, y mantenerlos organizado). Estas clases cargan grupos de archivos de eventos, descartan datos “huérfanos” por fallas de TensorFlow y organizan los datos por etiqueta.

Como otra opción, hay una secuencia de comandos ( tensorboard/scripts/serialize_tensorboard.py ) que cargará un directorio de registro como lo hace TensorBoard, pero escribe todos los datos en el disco como json en lugar de iniciar un servidor. Esta secuencia de comandos está configurada para hacer “backends falsos de TensorBoard” para la prueba, por lo que es un poco áspero en los bordes.

Utilizando EventAccumulator :

 # In [1]: from tensorflow.python.summary import event_accumulator # deprecated In [1]: from tensorboard.backend.event_processing import event_accumulator In [2]: ea = event_accumulator.EventAccumulator('events.out.tfevents.x.ip-xxx-x', ...: size_guidance={ # see below regarding this argument ...: event_accumulator.COMPRESSED_HISTOGRAMS: 500, ...: event_accumulator.IMAGES: 4, ...: event_accumulator.AUDIO: 4, ...: event_accumulator.SCALARS: 0, ...: event_accumulator.HISTOGRAMS: 1, ...: }) In [3]: ea.Reload() # loads events from file Out[3]:  In [4]: ea.Tags() Out[4]: {'audio': [], 'compressedHistograms': [], 'graph': True, 'histograms': [], 'images': [], 'run_metadata': [], 'scalars': ['Loss', 'Epsilon', 'Learning_rate']} In [5]: ea.Scalars('Loss') Out[5]: [ScalarEvent(wall_time=1481232633.080754, step=1, value=1.6365480422973633), ScalarEvent(wall_time=1481232633.2001867, step=2, value=1.2162202596664429), ScalarEvent(wall_time=1481232633.3877788, step=3, value=1.4660096168518066), ScalarEvent(wall_time=1481232633.5749283, step=4, value=1.2405034303665161), ScalarEvent(wall_time=1481232633.7419815, step=5, value=0.897326648235321), ...] 

size_guidance :

 size_guidance: Information on how much data the EventAccumulator should store in memory. The DEFAULT_SIZE_GUIDANCE tries not to store too much so as to avoid OOMing the client. The size_guidance should be a map from a `tagType` string to an integer representing the number of items to keep per tag for items of that `tagType`. If the size is 0, all events are stored. 

Para finalizar la respuesta del usuario1501961, puede exportar fácilmente la lista de escalares a un archivo csv fácilmente con pandas pd.DataFrame(ea.Scalars('Loss)).to_csv('Loss.csv')