本文整理汇总了Python中tensorflow.contrib.graph_editor.util.make_list_of_op函数的典型用法代码示例。如果您正苦于以下问题:Python make_list_of_op函数的具体用法?Python make_list_of_op怎么用?Python make_list_of_op使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了make_list_of_op函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: get_backward_walk_ops
def get_backward_walk_ops(seed_ops, inclusive=True, within_ops=None, stop_at_ts=(), control_inputs=False):
"""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 whithin which the search is
restricted. If within_ops is None, the search is performed within
the whole graph.
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.
"""
if not util.is_iterable(seed_ops):
seed_ops = [seed_ops]
if not seed_ops:
return []
if isinstance(seed_ops[0], tf_ops.Tensor):
ts = util.make_list_of_t(seed_ops, allow_graph=False)
seed_ops = util.get_generating_ops(ts)
else:
seed_ops = util.make_list_of_op(seed_ops, allow_graph=False)
stop_at_ts = frozenset(util.make_list_of_t(stop_at_ts))
seed_ops = frozenset(util.make_list_of_op(seed_ops))
if within_ops:
within_ops = util.make_list_of_op(within_ops, allow_graph=False)
within_ops = frozenset(within_ops)
seed_ops &= within_ops
def is_within(op):
return within_ops is None or op in within_ops
result = list(seed_ops)
wave = set(seed_ops)
while wave:
new_wave = set()
for op in wave:
for new_t in op.inputs:
if new_t in stop_at_ts:
continue
if new_t.op not in result and is_within(new_t.op):
new_wave.add(new_t.op)
if control_inputs:
for new_op in op.control_inputs:
if new_op not in result and is_within(new_op):
new_wave.add(new_op)
util.concatenate_unique(result, new_wave)
wave = new_wave
if not inclusive:
result = [op for op in result if op not in seed_ops]
return result
开发者ID:apollos,项目名称:tensorflow,代码行数:58,代码来源:select.py
示例2: get_forward_walk_ops
def get_forward_walk_ops(seed_ops, inclusive=True, within_ops=None,
control_outputs=True):
"""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 whithin which the search is
restricted. If within_ops is None, the search is performed within
the whole graph.
control_outputs: an object convertible to a control output dictionary
(see function util.convert_to_control_outputs for more details).
If the dictionary can be created, 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.
"""
if not util.is_iterable(seed_ops): seed_ops = [seed_ops]
if not seed_ops: return set()
if isinstance(seed_ops[0], tf_ops.Tensor):
ts = util.make_list_of_t(seed_ops, allow_graph=False)
seed_ops = get_consuming_ops(ts)
else:
seed_ops = util.make_list_of_op(seed_ops, allow_graph=False)
control_outputs = util.convert_to_control_outputs(seed_ops, control_outputs)
seed_ops = frozenset(seed_ops)
if within_ops:
within_ops = util.make_list_of_op(within_ops, allow_graph=False)
within_ops = frozenset(within_ops)
seed_ops &= within_ops
def is_within(op):
return within_ops is None or op in within_ops
result = set(seed_ops)
wave = set(seed_ops)
while wave:
new_wave = set()
for op in wave:
for new_t in op.outputs:
for new_op in new_t.consumers():
if new_op not in result and is_within(new_op):
new_wave.add(new_op)
if control_outputs is not None and op in control_outputs:
for new_op in control_outputs[op]:
if new_op not in result and is_within(new_op):
new_wave.add(new_op)
result.update(new_wave)
wave = new_wave
if not inclusive:
result.difference_update(seed_ops)
return result
开发者ID:363158858,项目名称:tensorflow,代码行数:57,代码来源:select.py
示例3: get_within_boundary_ops
def get_within_boundary_ops(ops,
seed_ops,
boundary_ops=(),
inclusive=True,
control_inputs=False,
control_outputs=None,
control_ios=None):
"""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.
"""
control_inputs, control_outputs = check_cios(control_inputs, control_outputs,
control_ios)
ops = util.make_list_of_op(ops)
seed_ops = util.make_list_of_op(seed_ops, allow_graph=False)
boundary_ops = set(util.make_list_of_op(boundary_ops))
res = set(seed_ops)
if boundary_ops & res:
raise ValueError("Boundary is intersecting with the seeds.")
wave = set(seed_ops)
while wave:
new_wave = set()
ops_io = get_ops_ios(wave, control_inputs, control_outputs)
for op in ops_io:
if op in res:
continue
if op in boundary_ops:
if inclusive:
res.add(op)
else:
new_wave.add(op)
res.update(new_wave)
wave = new_wave
return [op for op in ops if op in res]
开发者ID:Ajaycs99,项目名称:tensorflow,代码行数:53,代码来源:select.py
示例4: get_ops_ios
def get_ops_ios(ops, control_inputs=False, control_outputs=None,
control_ios=None):
"""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.
"""
control_inputs, control_outputs = check_cios(control_inputs, control_outputs,
control_ios)
ops = util.make_list_of_op(ops)
res = []
for op in ops:
util.concatenate_unique(res, [t.op for t in op.inputs])
for t in op.outputs:
util.concatenate_unique(res, t.consumers())
if control_outputs is not None:
util.concatenate_unique(res, control_outputs.get(op))
if control_inputs:
util.concatenate_unique(res, op.control_inputs)
return res
开发者ID:JamesFysh,项目名称:tensorflow,代码行数:31,代码来源:select.py
示例5: __init__
def __init__(self, inside_ops=(), passthrough_ts=()):
"""Create a subgraph containing the given ops and the "passthrough" tensors.
Args:
inside_ops: an object convertible to a list of tf.Operation. This list
defines all the operations in the subgraph.
passthrough_ts: an object convertible to a list of tf.Tensor. This list
define all the "passthrough" tensors. A passthrough tensor is a tensor
which goes directly from the input of the subgraph to it output, without
any intermediate operations. All the non passthrough tensors are
silently ignored.
Raises:
TypeError: if inside_ops cannot be converted to a list of tf.Operation or
if passthrough_ts cannot be converted to a list of tf.Tensor.
"""
inside_ops = util.make_list_of_op(inside_ops)
passthrough_ts = util.make_list_of_t(passthrough_ts)
ops_and_ts = inside_ops + passthrough_ts
if ops_and_ts:
self._graph = util.get_unique_graph(ops_and_ts)
else:
self._graph = None
self._ops = inside_ops
# Compute inside and outside tensor
inputs, outputs, insides = select.compute_boundary_ts(inside_ops)
# Compute passthrough tensors, silently ignoring the non-passthrough ones.
all_tensors = frozenset(inputs + outputs + list(insides))
self._passthrough_ts = [t for t in passthrough_ts if t not in all_tensors]
# Set inputs and outputs.
self._input_ts = inputs + self._passthrough_ts
self._output_ts = outputs + self._passthrough_ts
开发者ID:2020zyc,项目名称:tensorflow,代码行数:34,代码来源:subgraph.py
示例6: get_within_boundary_ops
def get_within_boundary_ops(ops,
seed_ops,
boundary_ops,
inclusive=True,
control_outputs=True):
"""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_outputs: an object convertible to a control output dictionary
(or None). If the dictionary can be created, it will be used while
expanding.
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.
"""
ops = util.make_list_of_op(ops)
control_outputs = util.convert_to_control_outputs(ops, control_outputs)
seed_ops = util.make_list_of_op(seed_ops, allow_graph=False)
boundary_ops = set(util.make_list_of_op(boundary_ops))
res = set(seed_ops)
if boundary_ops & res:
raise ValueError("Boundary is intersecting with the seeds.")
wave = set(seed_ops)
while wave:
new_wave = set()
ops_io = get_ops_ios(wave, control_outputs)
for op in ops_io:
if op in res:
continue
if op in boundary_ops:
if inclusive:
res.add(op)
else:
new_wave.add(op)
res.update(new_wave)
wave = new_wave
return res
开发者ID:363158858,项目名称:tensorflow,代码行数:45,代码来源:select.py
示例7: compute_boundary_ts
def compute_boundary_ts(ops):
"""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.
"""
ops = util.make_list_of_op(ops)
input_ts = _get_input_ts(ops)
output_ts = _get_output_ts(ops)
output_ts_set = frozenset(output_ts)
ops_set = frozenset(ops)
# Compute inside tensors.
inside_ts = []
only_inside_ts = []
for t in input_ts:
# Skip if the input tensor is not also an output tensor.
if t not in output_ts_set:
continue
# Mark as "inside".
inside_ts.append(t)
# Mark as "only inside" if the tensor is not both inside and output.
consumers = frozenset(t.consumers())
if consumers - ops_set:
continue
only_inside_ts.append(t)
inside_ts_set = frozenset(inside_ts)
only_inside_ts_set = frozenset(only_inside_ts)
outside_output_ts = [t for t in output_ts if t not in only_inside_ts_set]
outside_input_ts = [t for t in input_ts if t not in inside_ts_set]
return outside_input_ts, outside_output_ts, inside_ts
开发者ID:Ajaycs99,项目名称:tensorflow,代码行数:50,代码来源:select.py
示例8: filter_ops
def filter_ops(ops, positive_filter=None):
"""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.
Returns:
A list of selected tf.Operation.
Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
"""
ops = util.make_list_of_op(ops)
if positive_filter is not None:
ops = [op for op in ops if positive_filter(op)]
return ops
开发者ID:363158858,项目名称:tensorflow,代码行数:15,代码来源:select.py
示例9: _get_output_ts
def _get_output_ts(ops):
"""Compute the list of unique output tensors of all the op in ops.
Args:
ops: an object convertible to a list of tf.Operation.
Returns:
The list of unique output tensors of all the op in ops.
Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
"""
ops = util.make_list_of_op(ops)
ts = []
for op in ops:
ts += op.outputs
return ts
开发者ID:Nishant23,项目名称:tensorflow,代码行数:15,代码来源:select.py
示例10: get_output_ts
def get_output_ts(ops):
"""Compute the set of output tensors of all the op in ops.
Args:
ops: an object convertible to a list of tf.Operation.
Returns:
The set of output tensors of all the op in ops.
Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
"""
ops = util.make_list_of_op(ops)
ts = set()
for op in ops:
ts.update(op.outputs)
return ts
开发者ID:363158858,项目名称:tensorflow,代码行数:15,代码来源:select.py
示例11: filter_ops
def filter_ops(ops, positive_filter):
"""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.
"""
ops = util.make_list_of_op(ops)
if positive_filter is not True: # pylint: disable=g-explicit-bool-comparison
ops = [op for op in ops if positive_filter(op)]
return ops
开发者ID:JamesFysh,项目名称:tensorflow,代码行数:16,代码来源:select.py
示例12: filter_ops_from_regex
def filter_ops_from_regex(ops, regex):
"""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.
"""
ops = util.make_list_of_op(ops)
regex_obj = _make_regex(regex)
return filter_ops(ops, lambda op: regex_obj.search(op.name))
开发者ID:363158858,项目名称:tensorflow,代码行数:16,代码来源:select.py
示例13: filter_ts_from_regex
def filter_ts_from_regex(ops, regex):
r"""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.
"""
ops = util.make_list_of_op(ops)
regex_obj = make_regex(regex)
return filter_ts(ops, positive_filter=lambda op: regex_obj.search(op.name))
开发者ID:JamesFysh,项目名称:tensorflow,代码行数:16,代码来源:select.py
示例14: compute_boundary_ts
def compute_boundary_ts(ops, ambiguous_ts_are_outputs=True):
"""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.
Args:
ops: an object convertible to a list of tf.Operation.
ambiguous_ts_are_outputs: a tensor can have consumers both inside and
outside ops. Such tensors are treated as outside tensor if
ambiguous_ts_are_outputs is True, otherwise they are treated as
inside tensor.
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.
Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
"""
ops = util.make_list_of_op(ops)
input_ts = _get_input_ts(ops)
output_ts = _get_output_ts(ops)
output_ts_set = frozenset(output_ts)
ops_set = frozenset(ops)
# fill in inside
inside_ts = []
for t in input_ts:
# is also output?
if t not in output_ts_set:
continue
# is ambiguous_ts_are_outputs is True, don't add to inside if ambiguous
if ambiguous_ts_are_outputs:
consumers = frozenset(t.consumers())
if consumers - ops_set:
continue
inside_ts.append(t)
inside_ts_set = frozenset(inside_ts)
outside_input_ts = [t for t in input_ts if t not in inside_ts_set]
outside_output_ts = [t for t in output_ts if t not in inside_ts_set]
return outside_input_ts, outside_output_ts, inside_ts
开发者ID:Nishant23,项目名称:tensorflow,代码行数:46,代码来源:select.py
示例15: compute_boundary_ts
def compute_boundary_ts(ops, keep_order=False, ambiguous_are_outputs=True):
"""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.
Args:
ops: an object convertible to a list of tf.Operation.
keep_order: if True use ops to determine the order of the resulting input
and output tensors.
ambiguous_are_outputs: a tensor can have consumers both inside and outside
ops. Such tensors are treated as outside tensor if inside_output_as_output
is True, otherwise they are treated as inside tensor.
Returns:
A Python set (list if keep_order is True) of input tensors.
A Python set (list if keep_order is True) of output tensors.
A Python set of inside tensors.
Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
"""
ops = util.make_list_of_op(ops)
input_tensors = get_input_ts(ops)
output_tensors = get_output_ts(ops)
inside_tensors = input_tensors & output_tensors
# deal with ambiguous tensors
if ambiguous_are_outputs:
inside_and_output_tensors = set()
for t in inside_tensors:
for op in t.consumers():
if op not in ops:
inside_and_output_tensors.add(t)
break
output_tensors |= inside_and_output_tensors
inside_tensors -= inside_and_output_tensors
outside_input_tensors = input_tensors - inside_tensors
outside_output_tensors = output_tensors - inside_tensors
if keep_order:
outside_input_tensors = [t for t in input_tensors
if t in outside_input_tensors]
outside_output_tensors = [t for t in output_tensors
if t in outside_output_tensors]
return outside_input_tensors, outside_output_tensors, inside_tensors
开发者ID:363158858,项目名称:tensorflow,代码行数:45,代码来源:select.py
示例16: filter_ts
def filter_ts(ops, positive_filter):
"""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.
"""
ops = util.make_list_of_op(ops)
ts = _get_input_ts(ops)
util.concatenate_unique(ts, _get_output_ts(ops))
if positive_filter is not True:
ts = [t for t in ts if positive_filter(t)]
return ts
开发者ID:JamesFysh,项目名称:tensorflow,代码行数:18,代码来源:select.py
示例17: filter_ts
def filter_ts(ops, positive_filter=None):
"""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.
Returns:
A list of tf.Tensor.
Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
"""
ops = util.make_list_of_op(ops)
tensors = set()
tensors.update(get_input_ts(ops))
tensors.update(get_output_ts(ops))
if positive_filter is not None:
tensors = [t for t in tensors if positive_filter(t)]
return tensors
开发者ID:363158858,项目名称:tensorflow,代码行数:18,代码来源:select.py
示例18: _get_input_ts
def _get_input_ts(ops):
"""Compute the list of unique input tensors of all the op in ops.
Args:
ops: an object convertible to a list of tf.Operation.
Returns:
The list of unique input tensors of all the op in ops.
Raises:
TypeError: if ops cannot be converted to a list of tf.Operation.
"""
ops = util.make_list_of_op(ops)
ts = []
ts_set = set()
for op in ops:
for t in op.inputs:
if t not in ts_set:
ts.append(t)
ts_set.add(t)
return ts
开发者ID:Nishant23,项目名称:tensorflow,代码行数:19,代码来源:select.py
示例19: add_control_inputs
def add_control_inputs(op, cops):
"""Add the control inputs cops to op.
Warning: this function is directly manipulating the internals of the tf.Graph.
Args:
op: a tf.Operation to which the control inputs are added.
cops: an object convertible to a list of `tf.Operation`.
Raises:
TypeError: if op is not a tf.Operation
ValueError: if any cop in cops is already a control input of op.
"""
if not isinstance(op, _tf_ops.Operation):
raise TypeError("Expected a tf.Operation, got: {}", type(op))
cops = _util.make_list_of_op(cops, allow_graph=False)
for cop in cops:
if cop in op.control_inputs:
raise ValueError("{} is already a control_input of {}".format(cop.name,
op.name))
op._add_control_inputs(cops) # pylint: disable=protected-access
开发者ID:AndrewTwinz,项目名称:tensorflow,代码行数:20,代码来源:reroute.py
示例20: remove_control_inputs
def remove_control_inputs(op, cops):
"""Remove the control inputs cops from co.
Warning: this function is directly manipulating the internals of the
`tf.Graph`.
Args:
op: a `tf.Operation` from which to remove the control inputs.
cops: an object convertible to a list of `tf.Operation`.
Raises:
TypeError: if op is not a `tf.Operation`.
ValueError: if any cop in cops is not a control input of op.
"""
if not isinstance(op, tf_ops.Operation):
raise TypeError("Expected a tf.Operation, got: {}", type(op))
cops = util.make_list_of_op(cops, allow_graph=False)
for cop in cops:
if cop not in op.control_inputs:
raise ValueError("{} is not a control_input of {}".format(op.name, cop.name))
# pylint: disable=protected-access
op._control_inputs = [cop for cop in op._control_inputs if cop not in cops]
op._recompute_node_def()
开发者ID:rhuangq,项目名称:tensorflow,代码行数:22,代码来源:reroute.py
注:本文中的tensorflow.contrib.graph_editor.util.make_list_of_op函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论