I am trying to generate some kind of textual representation for the TensorFlow Computational Graph. I know that Tensorboard can provide me with the visualization. However, I need some kind of representation (adjacency matrix or adjacency list) from where I can parse information associated with graphs.
So far, I have tried the following:
import tensorflow as tf
a = tf.constant(1.3, name = const_a)
b = tf.constant(3.1, name = const_b)
c = tf.add(a,b, name = 'addition')
d = tf.multiply(c,a, name = 'multiplication')
e = tf.add(d,c, name = 'addition_1')
with tf.Session() as sess:
print(sess.run([c,d,e]))
After this, I decided to keep the graph object in a separate variable and tried to parse information from there:
graph = tf.get_default_graph()
I found out how to get the list of all operations from this documentation.
for op in graph.get_operations():
print(op.values())
This part actually provides me with the information of the nodes of the computation graph.
(<tf.Tensor 'const_a:0' shape=() dtype=float32>,)
(<tf.Tensor 'const_b:0' shape=() dtype=float32>,)
(<tf.Tensor 'addition:0' shape=() dtype=float32>,)
(<tf.Tensor 'multiplication:0' shape=() dtype=float32>,)
(<tf.Tensor 'addition_1:0' shape=() dtype=float32>,)
However, I cannot seem to find any method that can provide me with information regarding the edges of the computation graph. I cannot find any method that can give me the input tensors associated with each operation. I would like to know that the operation named addition_1
has input tensors produced by the operations addition
and multiplication;
or something that can be used to derive this information. From the documentation, it seems that the Operation
object has a property named inputs
which may be the thing I am looking for. Nonetheless, I don't see a method that can be called to return this property.