【问题标题】:TensorBoard - Plot loss from 2 networks trained simultaneously on the same graphTensorBoard - 绘制在同一张图上同时训练的 2 个网络的损失
【发布时间】:2017-09-18 02:58:51
【问题描述】:

有没有办法绘制同时训练的两个不同网络的训练损失?

目前我使用两个FileWriter 并将摘要保存到两个不同的目录:

writer_cnn  = tf.summary.FileWriter(os.path.join('log', 'cnn'))
writer_dann = tf.summary.FileWriter(os.path.join('log', 'dann'))
s_loss_cnn  = tf.summary.scalar('loss_class', loss_class_cnn)
s_loss_dann = tf.summary.scalar('loss_class', loss_class_dann)

以及后面的代码:

s_cnn  = sess.run(s_loss_cnn, feed_dict=feed_batch)
s_dann = sess.run(s_loss_dann, feed_dict=feed_batch)
writer_cnn.add_summary(s_cnn, global_step)
writer_dann.add_summary(s_dann, global_step)

但是当我启动 TensorBoard 时,我得到两个不同的图表 loss_classloss_class_1。我在 herethere 等不同的地方读到过,创建两个目录是可行的方法。我错过了什么吗?

【问题讨论】:

  • 在您引用的示例中, same 损失被写入两个不同的目录。在这里,您有两种不同的损失。
  • @user1735003 知道如何在同一个图中绘制这两个不同的损失吗?
  • github.com/tensorflow/tensorflow/issues/… 提到了一种方法,不过看起来确实有点脆弱。

标签: python tensorflow tensorboard


【解决方案1】:

您没有包含您的代码,但我怀疑您的问题是因为您将所有操作添加到同一个图表(默认图表)。

尝试创建单独的图表并将它们添加到您的writer(图表参数)

类似这样的:

def graph1():
    g1 = tf.Graph()
    with g1.as_default() as g:
        # define your ops
    with tf.Session( graph = g ) as sess:
        # do all the stuff and write the writer

创建一个类似的函数graph2(),然后调用它们。

【讨论】:

  • 如果我错了,请纠正我,但这意味着我不再同时训练两个网络了,不是吗?我会with tf.Session(graph=g1) as sess: #do first training 然后with tf.Session(graph=g2) as sess: #do second training
  • @Leo 是的,你是对的。我不知何故错过了那部分。但是,如果您将内容添加到同一个默认图表中,TB 将显示此图表,无论您将直接在哪个图表中编写它
  • 你的意思是实际的图形表示吗?因为我真的不在乎。虽然,我从你所说的中得到的是,如果我将两个具有相同名称的摘要放在同一个图中,那么就无法绘制两个标量,因为 TF 将重命名第二个变量。它是否正确?有没有解决方法? (除了分割图表和会话。)
猜你喜欢
  • 2020-06-27
  • 2018-06-01
  • 2016-09-10
  • 2018-04-06
  • 2022-06-30
  • 2020-10-17
  • 2021-12-12
  • 1970-01-01
  • 2020-09-05
相关资源
最近更新 更多