當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。