gpt4 book ai didi

tensorflow - Tensorboard 标量和图形重复

转载 作者:行者123 更新时间:2023-12-04 18:59:04 26 4
gpt4 key购买 nike

我正在使用 TensorBoard 来可视化网络指标和图表。

我创建了一个 session sess = tf.InteractiveSession()并在 Jupyter Notebook 中构建图形。

在图中,我包含了两个汇总标量:

with tf.variable_scope('summary') as scope:    
loss_summary = tf.summary.scalar('Loss', cross_entropy)
train_accuracy_summary = tf.summary.scalar('Train_accuracy', accuracy)

然后我创建了一个 summary_writer = tf.summary.FileWriter(logdir, sess.graph)并运行:
_,loss_sum,train_accuracy_sum=sess.run([...],feed_dict=feed_dict)
我写的指标:
summary_writer.add_summary(loss_sum, i)
summary_writer.add_summary(train_accuracy_sum, i)

我运行代码三遍。

每次运行时,我都会重新导入 TF 并创建一个新的交互式 session 。

但是,在 Tensorboard 中,每次运行都会创建一个单独的标量窗口:

enter image description here

此外,如果我检查上次运行的数据,图表似乎是重复的:

enter image description here

每次运行时如何防止图形和标量窗口重复?
  • 我希望所有数据都出现在相同的标量图中(具有多个系列/图)。
  • 我希望每次运行都引用单个图形可视化。
  • 最佳答案

    我怀疑问题的出现是因为您在此过程中运行了 3 次代码(相同的脚本、Jupyter 笔记本或其他),并且这些调用共享相同的 "default graph"在 TensorFlow 中。 TensorFlow 需要给图中的每个节点一个唯一的名称,因此它附加 "_1""_2"到第二次和第三次调用中的摘要节点的名称。

    你如何避免这种情况?最简单的方法是每次运行代码时创建一个新图。有(至少)三种方法可以做到这一点:

  • 将代码包裹在 with tf.Graph().as_default(): 中块,它构造了一个新的 tf.Graph 对象并将其设置为 with 范围的默认图形堵塞。
  • 如果您在创建图形之前构建 session ,则可以将 session 构建为 sess = tf.InteractiveSession(graph=tf.Graph()) .新建tf.Graph对象保持为默认图形,直到您调用 sess.close() .
  • 调用 tf.reset_default_graph() 在代码调用之间。
  • with -block 方法是“最结构化”的做事方式,如果您正在编写独立脚本,这可能是最好的。但是,由于您使用的是 tf.InteractiveSession ,我假设您正在使用某种交互式 REPL,而其他两种方法可能更有用(例如,用于将执行拆分到多个单元格中)。

    关于tensorflow - Tensorboard 标量和图形重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42847155/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com