Tensorboard events файл в matplotlib

При обучении tensorflow на kaggle возникла проблема в том, что tensorboard никак не запускался, поэтому чтобы посмотреть как шло обучение можно с помощью следующего метода. Сначала импортируются библиотеки:

import pandas as pd

from matplotlib import pyplot as plt

import tensorflow as tf

import struct

from tensorflow.python.summary.summary_iterator import summary_iterator

Смотрим общую информацию по интересующему тегу (В данном случае Loss/total_loss, использованный для object detection). В принципе, если эта информация не нужна, то можно не делать этот пункт. Обращаемся к файлу events, который остается после обучения.

%load_ext tensorboard

%tensorboard --inspect --event_file=../input/cots3-tf/cots_efficientdet_d0/train/events.out.tfevents.1639741910.c99baf65a5e4.274.0.v2 --tag=Loss/total_loss

Результат:

The tensorboard extension is already loaded. To reload it, use:

  %reload_ext tensorboard

ERROR: Failed to launch TensorBoard (exited with 0).

Contents of stdout:

======================================================================

Processing event files... (this can take a few minutes)

======================================================================

 

Event statistics for tag Loss/total_loss in ../input/cots3-tf/cots_efficientdet_d0/train/events.out.tfevents.1639741910.c99baf65a5e4.274.0.v2:

tensor

   first_step           100

   last_step            20000

   max_step             20000

   min_step             100

   num_steps            200

   outoforder_steps     [

 

======================================================================

Заполняем список значениями loss для каждого шага:

total_loss=[

for e in summary_iterator("../input/cots3-tf/cots_efficientdet_d0/train/events.out.tfevents.1639741910.c99baf65a5e4.274.0.v2"):   

    for v in e.summary.value:

        if v.tag == 'Loss/total_loss':           

            total_loss.append(struct.unpack('f', v.tensor.tensor_content)[0])  

Ну и собственно выводим loss:

fig, ax = plt.subplots(1, 1, figsize=(30,15),facecolor='gray')

plt.title(u'Loss/total_loss', color = 'black',  fontsize = 'x-large')

lines = ax.plot(total_loss)

plt.draw()

2021-12-23_17-19-04