0
votes

I have a following code using tensorflow:

 g1 = tf.Graph()
 g2 = tf.Graph()

 with g1.as_default():
     a = tf.constant(3)
     b = tf.constant(4)
     c = tf.add(a, b)

 with g2.as_default():
     x = tf.constant(5)
     y = tf.constant(2)
     z = tf.multiply(x, y)

 writer = tf.summary.FileWriter("./graphs", g1)
 writer = tf.summary.FileWriter("./graphs", g2)
 writer.close()

And on tensorboard, I get this:

enter image description here

But it is missing the first graph. Is there a way to draw both graphs?

1

1 Answers

3
votes

Your second call to tf.summary.FileWriter overwrites your first file.

What happens if you write to a different file, by closing the first writer before opening a second?

WARNING:tensorflow:Found more than one graph event per run, or there was a metagraph containing a graph_def, as well as one or more graph events. Overwriting the graph with the newest event.

So it seems tensorboard is not ready to handle more than one graph. Should we worry? To cite Yaroslav Bulatov,

Using more than one graph in a process is generally a terrible mistake.

EDIT

Note that a tensorflow Graph can host several, non-connected components, effectively representing several distinct graphs. For example,

import tensorflow as tf

g = tf.Graph()
with g.as_default():
     a = tf.constant(3)
     b = tf.constant(4)
     c = tf.add(a, b)

     x = tf.constant(5)
     y = tf.constant(2)
     z = tf.multiply(x, y)

writer = tf.summary.FileWriter("./graphs", g)
writer.close()

results in the following

enter image description here

This is one of the reasons why using several Graphs is usually not needed.