Tensorflow 张量板标量和图复制

Tensorflow 张量板标量和图复制,tensorflow,tensorboard,Tensorflow,Tensorboard,我使用TensorBoard来可视化网络度量和图形 我创建了一个sessionsess=tf.InteractiveSession(),并在Jupyter笔记本中构建了该图 在图中,我包括两个摘要标量: with tf.variable_scope('summary') as scope: loss_summary = tf.summary.scalar('Loss', cross_entropy) train_accuracy_summary = tf.summary.sc

我使用TensorBoard来可视化网络度量和图形

我创建了一个session
sess=tf.InteractiveSession()
,并在Jupyter笔记本中构建了该图

在图中,我包括两个摘要标量:

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\u writer=tf.summary.FileWriter(logdir,sess.graph)
并运行:

\u,损耗总和,训练精度总和=成功运行([…],进刀量=进刀量)

我编写度量标准:

summary_writer.add_summary(loss_sum, i)
summary_writer.add_summary(train_accuracy_sum, i) 
我运行代码三次

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

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

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

如何防止每次运行时重复图形和标量窗口

  • 我希望所有数据都显示在相同的标量图中(具有多个系列/图)
  • 我希望每次运行都引用单个图形可视化

我怀疑出现问题的原因是您在流程中运行了三次代码(相同的脚本、Jupyter笔记本或其他),并且这些调用在TensorFlow中共享相同的调用。TensorFlow需要为图中的每个节点指定一个唯一的名称,因此在第二次和第三次调用中,它会在摘要节点的名称后面附加
“\u 1”
“\u 2”

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

  • 将代码包装在块中,这将构造一个新对象,并将其设置为
    with
    块范围的默认图形

  • 如果在创建图之前构造会话,则可以将会话构造为
    sess=tf.InteractiveSession(graph=tf.graph())
    。新构造的
    tf.Graph
    对象保留为默认图形,直到调用
    sess.close()

  • 代码调用之间的调用


带有-block的
方法是“最结构化”的方法,如果您正在编写独立脚本,这可能是最好的方法。但是,由于您正在使用,我假设您正在使用某种交互式REPL,而其他两种方法可能更有用(例如,用于在多个单元格之间分割执行)。

如果要解决此问题,则在保存多个图形时会出现此问题:


tf.reset\u default\u graph()

谢谢!这正是问题所在:)从Jupyter笔记本上运行。我选择了选项#2:
sess=tf.InteractiveSession(graph=tf.graph())
这也会造成很多负担吗?在这个意义上,每次你创建一个新的图表?