为什么即使在删除事件文件[Tensorflow]后仍然可以看到旧节点?

时间:2017-06-19 04:54:04

标签: tensorflow tensorboard

我刚刚开始学习tensorflow,并在Jupyter-Notebook中编写了以下代码:

a = tf.placeholder(tf.float32,shape=[3,3],name='X')
b = tf.constant([[5,5,5],[2,3,4],[4,5,6]],tf.float32,name='Y')
c = tf.matmul(a,b)

with tf.Session() as sess:
    writer = tf.summary.FileWriter('./graphs',sess.graph)
    print (sess.run(c,feed_dict={a:[[2,3,4],[4,5,6],[6,7,8]]}))

writer.close()

第一次运行tensorboard,给出一个X,Y和mult节点,如下所示:

Tensorboard_before

然而,当我再次编译我的代码(ctrl+enter)时,张量板现在复制了原始图形。

我尝试通过以下方法解决此问题(删除较旧的死节点):
1.删​​除事件文件 2.删除包含相同代码的多个事件文件的整个目录 3.在tensorboard命令行调用之前运行fuser 6006/tcp -k

但即使在那之后,当我运行tensorboard时,它会显示重复的副本。

Tensorboard_after

唯一有效的解决方案是使用代码开头的tf.reset_default_graph()shut the notebook down and restart it重置图表。

我的问题是:
1.为什么even after deleting the event files, the older dead nodes keep showing up on the tensorboard?是的,我甚至在每次尝试后都重新启动了Tensorboard,但重复仍然存在 2.除了上面列出的两个方法之外,有什么方法可以摆脱死节点?

2 个答案:

答案 0 :(得分:3)

您描述的节点并未死亡。它们仍然存在并且可以使用。

第一次运行代码时,创建的节点会添加到图表中。当您第二次执行相同的单元格时,会再次使用不同的名称添加它们。

如果您只是将.py文件中的代码复制两次,则可以实现相同的目的。

tf.reset_default_graph()的解决方案是正确的。重新启动笔记本电脑是因为删除了内存中的所有信息。与重新运行.py文件相同。

你删除偶数文件的东西不起作用,因为尽管如此,文件被删除,添加到内存中的图形的节点仍然存在。

答案 1 :(得分:0)

我也遇到了显示重复图表的张量板问题。我尝试了一些措施,比如删除事件文件,删除包含事件文件的日志目录,但是tensorboard仍会记住上一次运行中的节点和图表,并将它们一个接一个地显示为重复副本。Duplicate graphs in tensorboard

我注意到每次运行代码时,tensorflow会创建相同的节点但名称不同,这意味着它仍然将旧节点保留在其内存中。在python执行窗口中看起来像这样:

首次运行后:

Nodes created after first run

第二次和第三次运行代码后:

Same Nodes created with different names

这解决了问题

1)在每次运行之前重新启动内核解决了问题

2)如上文所述,在代码开头添加tf.reset_default_graph()也解决了问题。