このページは Cloud Translation API によって翻訳されました。
Switch to English

tf.init_scope

TensorFlow 1つのバージョン GitHubの上のソースを表示

コンテキストマネージャ制御フロースコープと機能構築グラフのうちリフトオプスこと。

制御フロースコープ、機能の構築、グラフ、および勾配のテープのうち、変数の初期化OPSを持ち上げる必要がしばしばあります。入射init_scope 、これらの要望を満足させるための機構です。具体的には、入力init_scope 3つの効果があります。

(1)すべての制御依存関係は、スコープが入力された瞬間にクリアされます。これは、から返されるコンテキストマネージャ入ると等価であるcontrol_dependencies(None)のような制御フロースコープ出るの副作用有し、 tf.condtf.while_loop

スコープがアクティブである間に作成される(2)すべての操作は、上で最も低いコンテキストに持ち上げられるcontext_stackグラフ関数を構築していません。ここで、コンテキストは、グラフまたは熱心なコンテキストのいずれかとして定義されています。すべてのコンテキストスイッチは、すなわち、デフォルトのグラフと熱心モードにすべてのスイッチとして、グラフのすべてのインストールは、と呼ばれるスレッドローカルスタックに記録されcontext_switches 。コンテキストが終了したときにコンテキストスイッチのログエントリがスタックからポップされます。入射init_scopeまでクロールと同等であるcontext_switches 、グラフ関数を構築し、それを入力されていない最初のコンテキストを見つけます。注意点は、グラフモードが有効になっていますが、デフォルトのグラフのスタックが空である場合は、入力することであるinit_scope単にデフォルトの一つとして、新鮮なグラフをインストールします。

スコープがアクティブである間(3)勾配テープが一時停止されます。

熱心な実行が有効になっている場合、init_scopeブロック内のコードは、トレース時熱心な実行をしても有効で実行tf.function 。例えば:

 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()
 

RuntimeError グラフの状態は、この初期化と互換性がない場合。