Tensorflow: How to get a tensor by name?
All tensors have string names which you can see as follows
[tensor.name for tensor in tf.get_default_graph().as_graph_def().node]
Once you know the name you can fetch the Tensor using <name>:0
(0 refers to endpoint which is somewhat redundant)
For instance if you do this
tf.constant(1)+tf.constant(2)
You have the following Tensor names
[u'Const', u'Const_1', u'add']
So you can fetch output of addition as
sess.run('add:0')
Note, this is part not part of public API. Automatically generated string tensor names are an implementation detail and may change.
There is a function tf.Graph.get_tensor_by_name(). For instance:
import tensorflow as tf
c = tf.constant([[1.0, 2.0], [3.0, 4.0]])
d = tf.constant([[1.0, 1.0], [0.0, 1.0]])
e = tf.matmul(c, d, name='example')
with tf.Session() as sess:
test = sess.run(e)
print e.name #example:0
test = tf.get_default_graph().get_tensor_by_name("example:0")
print test #Tensor("example:0", shape=(2, 2), dtype=float32)