Построить несколько графиков на одном графике с помощью Tensorboard

Я использую Keras с бэкэндом Tensorflow. Моя работа заключается в сравнении характеристик нескольких моделей, таких как Inception, VGG, Resnet и т. Д. В моем наборе данных. Я хотел бы представить точность обучения нескольких моделей на одном графике. Я пытаюсь сделать это в Tensorboard, но это не работает.

Есть ли способ построения нескольких графиков на одном графике с помощью Tensorboard или есть другой способ, которым я могу это сделать?

Спасибо

4 ответа

Если вы используете SummaryWriter из tenorboardX или pytorch 1.2, у вас есть метод add_scalars:

Назовите это так:

my_summary_writer.add_scalars(f'loss/check_info', {
    'score': score[iteration],
    'score_nf': score_nf[iteration],
}, iteration)

И это будет выглядеть так:

изображение тензорной доски


Будьте осторожны, что add_scalars будет мешать организации ваших пробегов: он добавит несколько записей в этот список (и, таким образом, создаст путаницу):

изображение тензорной доски

Я бы порекомендовал вместо этого просто сделать:

my_summary_writer.add_scalar(f'check_info/score',    score[iter],    iter)
my_summary_writer.add_scalar(f'check_info/score_nf', score_nf[iter], iter)

Вот способ сгруппировать несколько графиков на одном графике в один прогон , используя add_custom_scalar в PyTorch.

Что я получаю:

Соответствующий полный рабочий код:

      from torch.utils.tensorboard import SummaryWriter
import math

layout = {
    "ABCDE": {
        "loss": ["Multiline", ["loss/train", "loss/validation"]],
        "accuracy": ["Multiline", ["accuracy/train", "accuracy/validation"]],
    },
}

writer = SummaryWriter()
writer.add_custom_scalars(layout)


epochs = 10
batch_size = 50

for epoch in range(epochs):
    for index in range(batch_size):
        global_batch_index = epoch * batch_size + index

        train_loss = math.exp(-0.01 * global_batch_index)
        train_accuracy = 1 - math.exp(-0.01 * global_batch_index)

        writer.add_scalar("loss/train", train_loss, global_batch_index)
        writer.add_scalar("accuracy/train", train_accuracy, global_batch_index)

    validation_loss = train_loss + 0.1
    validation_accuracy = train_accuracy - 0.1

    writer.add_scalar("loss/validation", validation_loss, global_batch_index)
    writer.add_scalar("accuracy/validation", validation_accuracy, global_batch_index)

 writer.close()

Обратите внимание, что используемая вкладка в левом верхнем углу окна не SCALARSно CUSTOM SCALARS

  • Вы можете определенно построить скаляры, такие как потеря и точность проверки: tf.summary.scalar("loss", cost) где стоимость - это тензор `cost = tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred), extension_indices=1))
  • Теперь вы пишете сводку для построения всех значений, а затем можете объединить все эти сводки в одну сводку: merged_summary_op = tf.summary.merge_all()
  • Следующим шагом будет запуск этой сводки в summary = sess.run(merged_summary_op)
  • После запуска merged_summary_op Вы должны написать резюме, используя summary_writer: summary_writer.add_summary(summary, epoch_number) где summary_writer = tf.summary.FileWriter(logs_path, graph=tf.get_default_graph())
  • Теперь откройте терминал или cmd и выполните следующую команду: "Запустите команду tensorboard --logdir="logpath"
  • Затем откройте http://0.0.0.0:6006/ в своем веб-браузере
  • Вы можете обратиться по следующей ссылке: https://github.com/jayshah19949596/Tensorboard-Visualization-Freezing-Graph
  • Другие вещи, которые вы можете построить, это вес, входные данные
  • Вы также можете отобразить изображения на тензорной доске
  • Я думаю, что если вы используете керас с tenorflow 1.5, то использовать тензорную доску легко, потому что в тензорный поток 1.5 кера включен в качестве их официального API высокого уровня
  • Я уверен, что вы можете построить разную точность на одном графике для одной и той же модели с разными гиперпараметрами, используя разные экземпляры FileWriter с разными путями журнала.
  • Проверьте изображение ниже:
  • Я не знаю, можете ли вы изобразить разную точность разных моделей на одном графике... Но вы можете написать программу, которая это делает
  • Может быть, вы можете записать сводную информацию о разных моделях в разные каталоги, а затем указать тензорную доску в родительский каталог, чтобы отобразить точность разных моделей на одном графике, как это предлагается в комментарии @RobertLugg

==================== ОБНОВЛЕНО =================

Я попытался сохранить точность и потерю разных моделей в разных каталогах, а затем настроить тензорную таблицу, чтобы она указывала на родительский каталог, и это работает, вы получите результаты разных моделей на одном графике. Я попробовал это сам, и это работает.

Просто сохраните каждый прогон в разных папках в основной папке и откройте тензорную доску в главной папке.

for i in range(x):
    tensorboard = TensorBoard(log_dir='./logs/' + 'run' + str(i), histogram_freq=0,
                                     write_graph=True, write_images=False)

    model.fit(X, Y, epochs=150, batch_size=10, callbacks=[tensorboard])

Из терминала запустите тензорную доску так:

tensorboard --logdir=logs
Другие вопросы по тегам