22

You can get a tensor by name with tf.get_default_graph().get_tensor_by_name("tensor_name:0")

But can you get an operation, such as Optimizer.minimize, or an enqueue operation on a queue?

In my first model I returned all tensors and ops I would need from a build_model function. But the list of tensors got ugly. In later models I tossed all tensors and ops in a dictionary for easier access. This time around I thought I'd just look up tensors by name as I needed them, but I don't know how to do that with ops.

Or is there a better way to do this? I find various tensors and ops are needed all over the place. Training, inference code, test cases, hence the desire for a nice standard way of accessing the various parts of the graph without passing variables all over the place.

David Parks
  • 30,789
  • 47
  • 185
  • 328
  • 1
    It would be really nice if there was a more standardized and less verbose way to get tensors and ops out of the graph. I also have gone through the stages of passing everything around as arguments and putting everything in dictionaries. Both have downsides. – sudo-nim Mar 30 '17 at 11:50
  • 1
    Agreed, in my latest work I encapsulated the model structure in a class and all tensors and ops became model.mytensor or m.mytensor. Except for suppressing warning messages it seems to be convenient so far. – David Parks Mar 31 '17 at 00:02

1 Answers1

31

You can use the tf.Graph.get_operation_by_name() method to get a tf.Operation by name. For example, to get an operation called "enqueue" from the default graph:

op = tf.get_default_graph().get_operation_by_name("enqueue")
mrry
  • 125,488
  • 26
  • 399
  • 400