使用Tensorboard在一个绘图中绘制多个图形

Kav*_*van 12 keras tensorflow tensorboard

我正在使用带有Tensorflow后端的Keras.我的工作涉及在我的数据集上比较几个模型的性能,如Inception,VGG,Resnet等.我想在一个图中绘制几个模型的训练精度.我试图在Tensorboard中这样做,但它不起作用.

有没有办法使用Tensorboard在一个图中绘制多个图形,还是有其他方法可以做到这一点?

谢谢

Man*_*EPA 24

这是一种将一个图中的多个图形分组为一次运行的方法,使用PyTorch上的add_custom_scalar。

我得到什么:

在此输入图像描述

对应的完整运行代码:

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()
Run Code Online (Sandbox Code Playgroud)

请注意,窗口左上角使用的选项卡不是SCALARS但是CUSTOM SCALARS


Ben*_*ier 20

如果您使用的是SummaryWriter从tensorboardX或pytorch 1.2,你有一个方法叫add_scalars:

像这样调用它:

my_summary_writer.add_scalars(f'loss/check_info', {
    'score': score[iteration],
    'score_nf': score_nf[iteration],
}, iteration)
Run Code Online (Sandbox Code Playgroud)

它会显示如下:

张量板图像


小心这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)
Run Code Online (Sandbox Code Playgroud)

  • 同样,这些图水平彼此相邻放置,但仍然使用不同的标签分开。 (3认同)

Jai*_*Jai 6

  • 您绝对可以绘制标量,例如损失和验证准确性:tf.summary.scalar("loss", cost)其中成本是张量cost = tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred), reduction_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

  • 您可以绘制的其他内容是权重、输入

  • 您还可以在张量板上显示图像

  • 我认为如果您在 tensorflow 1.5 中使用 keras,那么使用 tensorboard 很容易,因为在 tensorflow 1.5 中,keras 被包含为他们的官方高级 api

  • 我相信您可以通过使用具有不同日志路径的不同 FileWriter 实例在具有不同超参数的同一模型的同一图形上绘制不同的精度

  • 检查下面的图像: 在此处输入图片说明

  • 我不知道你是否可以在同一张图上绘制不同模型的不同精度......但是你可以编写一个程序来做到这一点

  • 也许您可以将不同模型的摘要信息写入不同的目录,然后将 tensor-board 指向父目录,以按照@RobertLugg 的评论中的建议在同一图表上绘制不同模型的准确性

==================== 更新 ==================

我尝试将不同模型的准确性和损失保存到不同的目录,然后使 tensorboard 指向父目录并且它有效,您将在同一图中获得不同模型的结果。我自己试过这个,它有效。

  • 如果我理解正确,这个答案并没有解释如何在单个图表上放置多个值。可能需要将摘要信息写入各个子目录并将 TensorBoard 指向父目录 (4认同)