当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.Graph.control_dependencies用法及代码示例


用法

control_dependencies(
    control_inputs
)

参数

  • control_inputs OperationTensor 对象的列表,必须在运行上下文中定义的操作之前执行或计算。也可以None来清除控件依赖。

返回

  • 一个上下文管理器,它为在上下文中构造的所有操作指定控制依赖关系。

抛出

  • TypeError 如果 control_inputs 不是 OperationTensor 对象的列表。

返回指定控制依赖关系的上下文管理器。

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。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.Graph.control_dependencies。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。