returnn.extern.graph_editor.select
#
Various ways of selecting operations and tensors in a graph.
- returnn.extern.graph_editor.select.can_be_regex(obj)[source]#
Return True if obj can be turned into a regular expression.
- returnn.extern.graph_editor.select.make_regex(obj)[source]#
Return a compiled regular expression.
- Args:
obj: a string or a regular expression.
- Returns:
A compiled regular expression.
- Raises:
ValueError: if obj could not be converted to a regular expression.
- returnn.extern.graph_editor.select.filter_ts(ops, positive_filter)[source]#
Get all the tensors which are input or output of an op in ops.
- Args:
ops: an object convertible to a list of tf.Operation. positive_filter: a function deciding whether to keep a tensor or not.
If True, all the tensors are returned.
- Returns:
A list of tf.Tensor.
- Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
- returnn.extern.graph_editor.select.filter_ts_from_regex(ops, regex)[source]#
Get all the tensors linked to ops that match the given regex.
- Args:
ops: an object convertible to a list of tf.Operation. regex: a regular expression matching the tensors’ name.
For example, “^foo(/.*)?:d+$” will match all the tensors in the “foo” scope.
- Returns:
A list of tf.Tensor.
- Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
- returnn.extern.graph_editor.select.filter_ops(ops, positive_filter)[source]#
Get the ops passing the given filter.
- Args:
ops: an object convertible to a list of tf.Operation. positive_filter: a function deciding where to keep an operation or not.
If True, all the operations are returned.
- Returns:
A list of selected tf.Operation.
- Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
- returnn.extern.graph_editor.select.filter_ops_from_regex(ops, regex)[source]#
Get all the operations that match the given regex.
- Args:
ops: an object convertible to a list of tf.Operation. regex: a regular expression matching the operation’s name.
For example, “^foo(/.*)?$” will match all the operations in the “foo” scope.
- Returns:
A list of tf.Operation.
- Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
- returnn.extern.graph_editor.select.get_name_scope_ops(ops, scope)[source]#
Get all the operations under the given scope path.
- Args:
ops: an object convertible to a list of tf.Operation. scope: a scope path.
- Returns:
A list of tf.Operation.
- Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
- returnn.extern.graph_editor.select.check_cios(control_inputs=False, control_outputs=None, control_ios=None)[source]#
Do various check on control_inputs and control_outputs.
- Args:
control_inputs: A boolean indicating whether control inputs are enabled. control_outputs: An instance of util.ControlOutputs or None. If not None,
control outputs are enabled.
- control_ios: An instance of util.ControlOutputs or None. If not None, both
control inputs and control outputs are enabled. This is equivalent to set control_inputs to True and control_outputs to the util.ControlOutputs instance.
- Returns:
- A tuple (control_inputs, control_outputs) where:
control_inputs is a boolean indicating whether to use control inputs. control_outputs is an instance of util.ControlOutputs or None
- Raises:
- ValueError: if control_inputs is an instance of util.ControlOutputs but
control_outputs is not None
TypeError: if control_outputs is not None and is not a util.ControlOutputs.
- returnn.extern.graph_editor.select.get_ops_ios(ops, control_inputs=False, control_outputs=None, control_ios=None)[source]#
Return all the tf.Operation which are connected to an op in ops.
- Args:
ops: an object convertible to a list of tf.Operation. control_inputs: A boolean indicating whether control inputs are enabled. control_outputs: An instance of util.ControlOutputs or None. If not
None, control outputs are enabled.
- control_ios: An instance of util.ControlOutputs or None. If not None,
both control inputs and control outputs are enabled. This is equivalent to set control_inputs to True and control_outputs to the util.ControlOutputs instance.
- Returns:
All the tf.Operation surrounding the given ops.
- Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
- returnn.extern.graph_editor.select.compute_boundary_ts(ops)[source]#
Compute the tensors at the boundary of a set of ops.
This function looks at all the tensors connected to the given ops (in/out) and classify them into three categories: 1) input tensors: tensors whose generating operation is not in ops. 2) output tensors: tensors whose consumer operations are not in ops 3) inside tensors: tensors which are neither input nor output tensors.
Note that a tensor can be both an inside tensor and an output tensor if it is consumed by operations both outside and inside of ops.
- Args:
ops: an object convertible to a list of tf.Operation.
- Returns:
- A tuple (outside_input_ts, outside_output_ts, inside_ts) where:
outside_input_ts is a Python list of input tensors; outside_output_ts is a python list of output tensors; inside_ts is a python list of inside tensors.
Since a tensor can be both an inside tensor and an output tensor, outside_output_ts and inside_ts might intersect.
- Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
- returnn.extern.graph_editor.select.get_within_boundary_ops(ops, seed_ops, boundary_ops=(), inclusive=True, control_inputs=False, control_outputs=None, control_ios=None)[source]#
Return all the tf.Operation within the given boundary.
- Args:
- ops: an object convertible to a list of tf.Operation. those ops define the
set in which to perform the operation (if a tf.Graph is given, it will be converted to the list of all its operations).
seed_ops: the operations from which to start expanding. boundary_ops: the ops forming the boundary. inclusive: if True, the result will also include the boundary ops. control_inputs: A boolean indicating whether control inputs are enabled. control_outputs: An instance of util.ControlOutputs or None. If not
None, control outputs are enabled.
- control_ios: An instance of util.ControlOutputs or None. If not
None, both control inputs and control outputs are enabled. This is equivalent to set control_inputs to True and control_outputs to the util.ControlOutputs instance.
- Returns:
All the tf.Operation surrounding the given ops.
- Raises:
- TypeError: if ops or seed_ops cannot be converted to a list of
tf.Operation.
ValueError: if the boundary is intersecting with the seeds.
- returnn.extern.graph_editor.select.get_forward_walk_ops(seed_ops, inclusive=True, within_ops=None, within_ops_fn=None, stop_at_ts=(), control_outputs=None)[source]#
Do a forward graph walk and return all the visited ops.
- Args:
- seed_ops: an iterable of operations from which the forward graph
walk starts. If a list of tensors is given instead, the seed_ops are set to be the consumers of those tensors.
inclusive: if True the given seed_ops are also part of the resulting set. within_ops: an iterable of tf.Operation within which the search is
restricted. If within_ops is None, the search is performed within the whole graph.
- within_ops_fn: if provided, a function on ops that should return True iff
the op is within the graph traversal. This can be used along within_ops, in which case an op is within if it is also in within_ops.
stop_at_ts: an iterable of tensors at which the graph walk stops. control_outputs: a util.ControlOutputs instance or None.
If not None, it will be used while walking the graph forward.
- Returns:
A Python set of all the tf.Operation ahead of seed_ops.
- Raises:
- TypeError: if seed_ops or within_ops cannot be converted to a list of
tf.Operation.
- returnn.extern.graph_editor.select.get_backward_walk_ops(seed_ops, inclusive=True, within_ops=None, within_ops_fn=None, stop_at_ts=(), control_inputs=False)[source]#
Do a backward graph walk and return all the visited ops.
- Args:
- seed_ops: an iterable of operations from which the backward graph
walk starts. If a list of tensors is given instead, the seed_ops are set to be the generators of those tensors.
inclusive: if True the given seed_ops are also part of the resulting set. within_ops: an iterable of tf.Operation within which the search is
restricted. If within_ops is None, the search is performed within the whole graph.
- within_ops_fn: if provided, a function on ops that should return True iff
the op is within the graph traversal. This can be used along within_ops, in which case an op is within if it is also in within_ops.
stop_at_ts: an iterable of tensors at which the graph walk stops. control_inputs: if True, control inputs will be used while moving backward.
- Returns:
A Python set of all the tf.Operation behind seed_ops.
- Raises:
- TypeError: if seed_ops or within_ops cannot be converted to a list of
tf.Operation.
- returnn.extern.graph_editor.select.get_walks_intersection_ops(forward_seed_ops, backward_seed_ops, forward_inclusive=True, backward_inclusive=True, within_ops=None, within_ops_fn=None, control_inputs=False, control_outputs=None, control_ios=None)[source]#
Return the intersection of a forward and a backward walk.
- Args:
- forward_seed_ops: an iterable of operations from which the forward graph
walk starts. If a list of tensors is given instead, the seed_ops are set to be the consumers of those tensors.
- backward_seed_ops: an iterable of operations from which the backward graph
walk starts. If a list of tensors is given instead, the seed_ops are set to be the generators of those tensors.
- forward_inclusive: if True the given forward_seed_ops are also part of the
resulting set.
- backward_inclusive: if True the given backward_seed_ops are also part of the
resulting set.
- within_ops: an iterable of tf.Operation within which the search is
restricted. If within_ops is None, the search is performed within the whole graph.
- within_ops_fn: if provided, a function on ops that should return True iff
the op is within the graph traversal. This can be used along within_ops, in which case an op is within if it is also in within_ops.
control_inputs: A boolean indicating whether control inputs are enabled. control_outputs: An instance of util.ControlOutputs or None. If not None,
control outputs are enabled.
- control_ios: An instance of util.ControlOutputs or None. If not None, both
control inputs and control outputs are enabled. This is equivalent to set control_inputs to True and control_outputs to the util.ControlOutputs instance.
- Returns:
- A Python set of all the tf.Operation in the intersection of a forward and a
backward walk.
- Raises:
- TypeError: if forward_seed_ops or backward_seed_ops or within_ops
cannot be converted to a list of tf.Operation.
- returnn.extern.graph_editor.select.get_walks_union_ops(forward_seed_ops, backward_seed_ops, forward_inclusive=True, backward_inclusive=True, within_ops=None, within_ops_fn=None, control_inputs=False, control_outputs=None, control_ios=None)[source]#
Return the union of a forward and a backward walk.
- Args:
- forward_seed_ops: an iterable of operations from which the forward graph
walk starts. If a list of tensors is given instead, the seed_ops are set to be the consumers of those tensors.
- backward_seed_ops: an iterable of operations from which the backward graph
walk starts. If a list of tensors is given instead, the seed_ops are set to be the generators of those tensors.
- forward_inclusive: if True the given forward_seed_ops are also part of the
resulting set.
- backward_inclusive: if True the given backward_seed_ops are also part of the
resulting set.
- within_ops: restrict the search within those operations. If within_ops is
None, the search is done within the whole graph.
- within_ops_fn: if provided, a function on ops that should return True iff
the op is within the graph traversal. This can be used along within_ops, in which case an op is within if it is also in within_ops.
control_inputs: A boolean indicating whether control inputs are enabled. control_outputs: An instance of util.ControlOutputs or None. If not None,
control outputs are enabled.
- control_ios: An instance of util.ControlOutputs or None. If not None, both
control inputs and control outputs are enabled. This is equivalent to set control_inputs to True and control_outputs to the util.ControlOutputs instance.
- Returns:
- A Python set of all the tf.Operation in the union of a forward and a
backward walk.
- Raises:
- TypeError: if forward_seed_ops or backward_seed_ops or within_ops cannot be
converted to a list of tf.Operation.
- returnn.extern.graph_editor.select.select_ops(*args, **kwargs)[source]#
Helper to select operations.
- Args:
- *args: list of 1) regular expressions (compiled or not) or 2) (array of)
tf.Operation. tf.Tensor instances are silently ignored.
- **kwargs: ‘graph’: tf.Graph in which to perform the regex query.This is
required when using regex. ‘positive_filter’: an elem if selected only if positive_filter(elem) is
True. This is optional.
- ‘restrict_ops_regex’: a regular expression is ignored if it doesn’t start
with the substring “(?#ops)”.
- Returns:
A list of tf.Operation.
- Raises:
- TypeError: if the optional keyword argument graph is not a tf.Graph
or if an argument in args is not an (array of) tf.Operation or an (array of) tf.Tensor (silently ignored) or a string or a regular expression.
- ValueError: if one of the keyword arguments is unexpected or if a regular
expression is used without passing a graph as a keyword argument.
- returnn.extern.graph_editor.select.select_ts(*args, **kwargs)[source]#
Helper to select tensors.
- Args:
- *args: list of 1) regular expressions (compiled or not) or 2) (array of)
tf.Tensor. tf.Operation instances are silently ignored.
- **kwargs: ‘graph’: tf.Graph in which to perform the regex query.This is
required when using regex. ‘positive_filter’: an elem if selected only if positive_filter(elem) is
True. This is optional.
- ‘restrict_ts_regex’: a regular expression is ignored if it doesn’t start
with the substring “(?#ts)”.
- Returns:
A list of tf.Tensor.
- Raises:
- TypeError: if the optional keyword argument graph is not a tf.Graph
or if an argument in args is not an (array of) tf.Tensor or an (array of) tf.Operation (silently ignored) or a string or a regular expression.
- ValueError: if one of the keyword arguments is unexpected or if a regular
expression is used without passing a graph as a keyword argument.
- returnn.extern.graph_editor.select.select_ops_and_ts(*args, **kwargs)[source]#
Helper to select operations and tensors.
- Args:
- *args: list of 1) regular expressions (compiled or not) or 2) (array of)
tf.Operation 3) (array of) tf.Tensor. Regular expressions matching tensors must start with the comment “(?#ts)”, for instance: “(?#ts)^foo/.*”.
- **kwargs: ‘graph’: tf.Graph in which to perform the regex query.This is
required when using regex. ‘positive_filter’: an elem if selected only if positive_filter(elem) is
True. This is optional.
- Returns:
- A tuple (ops, ts) where:
ops is a list of tf.Operation, and ts is a list of tf.Tensor
- Raises:
- TypeError: if the optional keyword argument graph is not a tf.Graph
or if an argument in args is not an (array of) tf.Tensor or an (array of) tf.Operation or a string or a regular expression.
- ValueError: if one of the keyword arguments is unexpected or if a regular
expression is used without passing a graph as a keyword argument.