我如何"重置" TensorBoard中为TensroFlow InteractiveSession显示的图表?

时间:2017-06-01 17:51:23

标签: tensorflow tensorboard

我希望能够在TensorBoard InteractiveSession中查看我正在试验的TensorFlow图表。

例如,我想要输入操作A,然后刷新TensorBoard并在图表中查看A,然后执行B并刷新并查看{图中的{1}}。然后,如果我决定要更改图表,我想要执行一些操作并获得一个清晰的平板,以便当我随后输入BA时,我只看到{{在TensorBoard中有1}}和C,而不是ACB的两个版本,正如我目前所见。

例如,如果我

C

然后运行

A

我在TensorBoard中显示了import tensorflow as tf sess = tf.InteractiveSession() # operation A # operation B writer = tf.summary.FileWriter(logdir='logdir', graph=sess.graph) writer.flush() tensorboard --logdir logdir --purge_orphaned_data 预期的图表。

如果我稍后执行其他操作

A

这些不会出现在TensorBoard中,除非我再次执行:

B

创建新日志# operation P # operation Q writer = tf.summary.FileWriter(logdir='_tflog', graph=sess.graph) writer.flush() 现在显示在TensorBoard中PQ旁边的图表中。

任何这些操作的每次额外执行要么在TensorBoard中无效,要么在我运行上面的A行时显示为附加节点。

如果我想随后删除操作(例如Bwriter),我似乎需要完全重启所有内容(AP并删除所有内容旧日志)。

所有这些都令人困惑,很难跟踪(我甚至不确定我的帐户是否正确!)。

有没有办法完全重置TensorBoard使用的Session,这样我才能在TensorBoard中查看自上次重置后添加的那些图元素?

1 个答案:

答案 0 :(得分:0)

我是新人,所以FWIW:我认为问题的一部分是图表而非会话。

TF似乎有一个非常粘的默认图。

非交互式设置中,我必须做两件事:

1)每次摆脱旧的Session文件(events.out.tfevents ....),因此他们没有堆积,

2)真正清除图表(通过使用会话中隐藏的默认图表以外的内容)来覆盖张量板显示。

请注意,保持tensorboard运行似乎很好,只需在Web浏览器中刷新localhost:6006 URL。

围绕我的主要图形构造代码,我使用:

mytfgraph = tf.Graph() # Get something other than the Default Graph
with mytfgraph.asdefault():

    ...lots of good code here...

    # Get rid of old Tensorboard graph file and just save new one
    filesindir = os.listdir(your_graph_location) 
    # os. calls may be OS-dependent
    # Make sure there is no subdir as not checking for this!
    for file in filesindir:
        try:        
            delfile = graph_location + file
            os.remove(delfile)
         except: 
             print('Warning, Tensorboard file not removed')

    train_writer = tf.summary.FileWriter(graph_location)
    # Using custom graph as default ("the with wrapper above")
    train_writer.add_graph(tf.get_default_graph()) 
    train_writer.close()

    ...down here I run batches using a 'with tf.Session() as sess:'...

由于您使用的是交互式会话(我不太了解),因此Graph部件的备用部件可以简化您的生活。这是私有方法:tf.reset_default_graph()Tensorboard scalars and graphs duplicated

Hacky与否,我没有使用它,因为我想尝试只使用公共方法。