用法
control_dependencies(
control_inputs
)
参数
-
control_inputs
Operation
或Tensor
对象的列表,必须在运行上下文中定义的操作之前执行或计算。也可以None
来清除控件依赖。
返回
- 一个上下文管理器,它为在上下文中构造的所有操作指定控制依赖关系。
抛出
-
TypeError
如果control_inputs
不是Operation
或Tensor
对象的列表。
返回指定控制依赖关系的上下文管理器。
与 with
关键字一起使用以指定在上下文中构造的所有操作都应具有对 control_inputs
的控制依赖项。例如:
with g.control_dependencies([a, b, c]):
# `d` and `e` will only run after `a`, `b`, and `c` have executed.
d = ...
e = ...
可以嵌套对control_dependencies()
的多次调用,在这种情况下,新的Operation
将对来自所有活动上下文的control_inputs
的联合具有控制依赖关系。
with g.control_dependencies([a, b]):
# Ops constructed here run after `a` and `b`.
with g.control_dependencies([c, d]):
# Ops constructed here run after `a`, `b`, `c`, and `d`.
你可以通过 None 来清除控制依赖:
with g.control_dependencies([a, b]):
# Ops constructed here run after `a` and `b`.
with g.control_dependencies(None):
# Ops constructed here run normally, not waiting for either `a` or `b`.
with g.control_dependencies([c, d]):
# Ops constructed here run after `c` and `d`, also not waiting
# for either `a` or `b`.
注意:控制依赖上下文适用只要到在上下文中构建的操作。仅在上下文中使用操作或张量不会添加控制依赖项。以下示例说明了这一点:
# WRONG
def my_func(pred, tensor):
t = tf.matmul(tensor, tensor)
with tf.control_dependencies([pred]):
# The matmul op is created outside the context, so no control
# dependency will be added.
return t
# RIGHT
def my_func(pred, tensor):
with tf.control_dependencies([pred]):
# The matmul op is created in the context, so a control dependency
# will be added.
return tf.matmul(tensor, tensor)
另请注意,尽管在此范围内创建的操作的执行将触发依赖项的执行,但在此范围内创建的操作可能仍会从正常的 tensorflow 图中删除。例如,在以下代码片段中,从不执行依赖项:
loss = model.loss()
with tf.control_dependencies(dependencies):
loss = loss + tf.constant(1) # note:dependencies ignored in the
# backward pass
return tf.gradients(loss, model.variables)
这是因为评估梯度图不需要评估前向传递中创建的 constant(1) op。
相关用法
- Python tf.Graph.container用法及代码示例
- Python tf.Graph.colocate_with用法及代码示例
- Python tf.Graph.as_default用法及代码示例
- Python tf.Graph.device用法及代码示例
- Python tf.Graph.get_name_scope用法及代码示例
- Python tf.Graph.gradient_override_map用法及代码示例
- Python tf.Graph.name_scope用法及代码示例
- Python tf.Graph用法及代码示例
- Python tf.GradientTape用法及代码示例
- Python tf.GradientTape.jacobian用法及代码示例
- Python tf.GradientTape.reset用法及代码示例
- Python tf.GradientTape.batch_jacobian用法及代码示例
- Python tf.GradientTape.stop_recording用法及代码示例
- Python tf.compat.v1.distributions.Multinomial.stddev用法及代码示例
- Python tf.compat.v1.distribute.MirroredStrategy.experimental_distribute_dataset用法及代码示例
- Python tf.compat.v1.data.TFRecordDataset.interleave用法及代码示例
- Python tf.summary.scalar用法及代码示例
- Python tf.linalg.LinearOperatorFullMatrix.matvec用法及代码示例
- Python tf.linalg.LinearOperatorToeplitz.solve用法及代码示例
- Python tf.raw_ops.TPUReplicatedInput用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.Graph.control_dependencies。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。