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


Python tf.init_scope用法及代碼示例


一個上下文管理器,可將操作從 control-flow 範圍和 function-building 圖表中提取出來。

用法

@tf_contextlib.contextmanager
tf.init_scope()

拋出

  • RuntimeError 如果圖形狀態與此初始化不兼容。

通常需要將變量初始化操作從control-flow 範圍、function-building 圖形和漸變磁帶中提升出來。輸入init_scope 是滿足這些需求的一種機製。特別是,輸入 init_scope 具有三個效果:

(1)在進入範圍的那一刻清除所有的控製依賴;這等效於進入從 control_dependencies(None) 返回的上下文管理器,它具有退出 control-flow 作用域(如 tf.condtf.while_loop )的副作用。

(2) 在作用域處於活動狀態時創建的所有操作都被提升到context_stack 上未構建圖形函數的最低上下文中。在這裏,上下文被定義為圖形或即刻的上下文。每個上下文切換,即作為默認圖的每個圖的安裝和每個切換到渴望模式的切換,都記錄在名為 context_switches 的線程本地堆棧中;當上下文退出時,上下文切換的日誌條目會從堆棧中彈出。輸入 init_scope 相當於向上爬 context_switches ,找到第一個沒有構建圖函數的上下文,然後輸入它。需要注意的是,如果啟用了圖形模式但默認圖形堆棧為空,則輸入 init_scope 將簡單地安裝一個新圖形作為默認圖形。

(3) 示波器處於活動狀態時,梯度磁帶暫停。

啟用即刻執行後,即使在跟蹤 tf.function 時,init_scope 塊內的代碼也會在啟用即刻執行的情況下運行。例如:

tf.compat.v1.enable_eager_execution()

@tf.function
def func():
  # A function constructs TensorFlow graphs,
  # it does not execute eagerly.
  assert not tf.executing_eagerly()
  with tf.init_scope():
    # Initialization runs with eager execution enabled
    assert tf.executing_eagerly()

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.init_scope。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。