2016-09-21 3 views

答えて

25

TL; DR:それは不要ですが、それは従うことをお勧めします。

デフォルトグラフは常に登録されているため、すべての演算子と変数はデフォルトグラフに配置されます。 しかし、このステートメントは新しいグラフを作成し、その範囲内に宣言されたすべてをこのグラフに配置します。 グラフが唯一のグラフであれば、それは役に立たない。しかし、多くのグラフで作業を開始すると、opsやvarsの配置場所を理解するのが簡単になるので、良い方法です。 このステートメントはあなたに何の費用もかからないので、とにかくそれを書く方が良いです。将来コードをリファクタリングする場合、定義されている操作は最初に選択したグラフに属することを確認するだけです。

5

あなたが作成したすべてのオペレーションに対して明示的にグラフを指定しなければならなかった時代の人工物です。

私は複数のグラフを必要とするあらゆる魅力的な例を見ていないので、あなたは通常、暗黙のグラフを維持し、あなたが

にきれいないくつかの落とし穴をスレートを拭くしたいときtf.reset_default_graph()を使用して逃げることができます。

  • デフォルトのグラフ・スタックは、あなたが、あなたのセッションのグラフは異なるFRになりますtf.reset_default_graph()を呼び出す前に、セッションを作成するので、もし複数のスレッドでローカルなので、作成OPSは、複数のグラフセッションがそのグラフ(sess.graph)のハンドルを保持します
  • を作成するスレッドですOMそのデフォルトのグラフは、ユーザーが設定することができ、あなたはそれらの落とし穴の1を押すと、作成した新しいOPSがその雪村

で実行可能でないことを意味し、特定の(すなわち、別のスレッドでtf.get_default_graph()またはsess.graphから)

self.graph_context = graph.as_default() # save it to some variable that won't get gc'ed 
self.graph_context.enforce_nesting = False 
self.graph_context.__enter__() 
+0

2つの別々のTensorflowモデルを復元する必要がある場合、2つのグラフが必要ですか? – user1700890

関連する問題

 関連する問題