Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you read Tensorboard files programmatically?

How can you write a python script to read Tensorboard log files, extracting the loss and accuracy and other numerical data, without launching the GUI tensorboard --logdir=...?

like image 659
mikal94305 Avatar asked Dec 10 '16 10:12

mikal94305


People also ask

How do I view a TensorBoard file?

If using standard options, you will then be able to view by opening http://127.0.0.1:6006/ in your web browser. You can view them after training. If you start tensorboard using the command in my answer (with the folder containing your file as --logdir argument), it should automatically open your file.

How do I download data from TensorBoard?

Just check the "Data download links" option on the upper-left in TensorBoard, and then click on the "CSV" button that will appear under your scalar summary.

What files does TensorBoard need?

To make our TensorFlow program TensorBoard-activated, we need to add some lines of code. This will export the TensorFlow operations into a file, called event file (or event log file). TensorBoard is able to read this file and give some insights of the model graph and its performance.

What is Logdir in TensorBoard?

tensorboard --logdir=summaries. --logdir is the directory you will create data to visualize. Files that TensorBoard saves data into are called event files. Type of data saved into the event files is called summary data. Optionally you can use --port=<port_you_like> to change the port TensorBoard runs on.


1 Answers

You can use TensorBoard's Python classes or script to extract the data:

How can I export data from TensorBoard?

If you'd like to export data to visualize elsewhere (e.g. iPython Notebook), that's possible too. You can directly depend on the underlying classes that TensorBoard uses for loading data: python/summary/event_accumulator.py (for loading data from a single run) or python/summary/event_multiplexer.py (for loading data from multiple runs, and keeping it organized). These classes load groups of event files, discard data that was "orphaned" by TensorFlow crashes, and organize the data by tag.

As another option, there is a script (tensorboard/scripts/serialize_tensorboard.py) which will load a logdir just like TensorBoard does, but write all of the data out to disk as json instead of starting a server. This script is setup to make "fake TensorBoard backends" for testing, so it is a bit rough around the edges.

Using 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-x-x-x-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]: <tensorflow.python.summary.event_accumulator.EventAccumulator at 0x7fdbe5ff59e8>  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. 
like image 194
user1501961 Avatar answered Sep 22 '22 17:09

user1501961