是什麼目的:爲什麼我們需要TensorFlow tf.Graph?
with tf.Graph().as_default()
我有一個使用上面的一些tensorflow代碼。 但是,代碼只有一個圖,爲什麼我們需要這個?
是什麼目的:爲什麼我們需要TensorFlow tf.Graph?
with tf.Graph().as_default()
我有一個使用上面的一些tensorflow代碼。 但是,代碼只有一個圖,爲什麼我們需要這個?
TL; DR:這是不必要的,但這是一個很好的做法。
由於默認圖形總是被註冊,所以每個操作和變量都被放入默認圖形中。 但是,該語句會創建一個新圖並將所有內容(在其範圍內聲明)放入此圖中。 如果圖是唯一的圖,那沒用。但是這是一個很好的做法,因爲如果你開始使用許多圖表,就更容易理解ops和vars的放置位置。 由於這個聲明沒有花費任何代價,所以最好寫下它。只要確保將來重構代碼,定義的操作就屬於您最初選擇的圖形。
當你不得不爲你創建的每一個操作顯式地指定圖時,這是一個人工產物。
我還沒有看到任何令人信服的情況下需要一個以上的圖形,因此你通常可以逃脫保持曲線隱含的使用tf.reset_default_graph()
當你想擦乾淨石板
的一些陷阱:
sess.graph
)的手柄,所以如果你創建會話調用tf.reset_default_graph()
之前,您的會話圖形會有所不同FR OM默認的圖形,這意味着你創建新的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__()
當您需要恢復兩個單獨的Tensorflow模型時,您是否需要兩張圖? – user1700890