arjunkhera
arjunkhera

Reputation: 979

Why old nodes are visible even after deleting event files [Tensorflow]?

I have just started learning tensorflow, and wrote the following piece of code in 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()

Running the tensorboard first time, gives a single X,Y and mult node as follows :

Tensorboard_before

However, when I again compile my code (ctrl+enter), the tensorboard now makes a duplicate of the original graph.

I tried to resolve this( remove the older,dead nodes) by:
1. Deleting the event files.
2. Deleting the whole directory containing multiple event files of the same code.
3. Running fuser 6006/tcp -k before the tensorboard command line call.

But even after that, when I ran tensorboard, it would show the duplicate copies.

Tensorboard_after

The only solution that worked was to reset the graph using tf.reset_default_graph() at the beginning of the code or to shut the notebook down and restart it.

My question is :
1. Why is it that even after deleting the event files, the older dead nodes keep showing up on the tensorboard ?. And yes I even restarted Tensorboard after each try, but duplicates were still there.
2. What are the ways if any, besides the two I listed above, to get rid of the dead nodes ?

Upvotes: 2

Views: 1206

Answers (2)

sharmistha maitra
sharmistha maitra

Reputation: 31

I was also having the same problem of tensorboard displaying duplicate graphs. I tried several measures like deleting the event files , deleting the log directory which contained the event files, but tensorboard would still remember the nodes and the graph from the previous run and show them as duplicate copies, one after another.Duplicate graphs in tensorboard

I noticed each time I ran the code tensorflow would create the same nodes but with different names, which means it was still keeping the old nodes in its memory. Looked something like this in the python execution window:

After first run:

Nodes created after first run

After running the code 2nd and 3rd time:

Same Nodes created with different names

This solved the problem

1) Restarting the kernel before each run solved the problem

2) As mentioned in above posts, adding tf.reset_default_graph() in the beginning of the code also solved the problem.

Upvotes: 0

Salvador Dali
Salvador Dali

Reputation: 222511

The nodes you described are not dead. They are still exist and can be used.

When you run your code the first time, the nodes where created and added to the graph. When you execute the same cell for the second time, they are added one more time with the different names.

The same can be achieved if you will just copy twice the code in your .py file.

Your solution with tf.reset_default_graph() is the right one. Restarting the notebook works because all the information from the memory was removed. The same as rerunning .py file.

Your stuff with removing the even files does not work because nonetheless the files are removed, the nodes added to the graph in the memory are still there.

Upvotes: 4

Related Questions