2015-11-17 34 views

回答

71

更新2016年11月2日

tf.reset_default_graph()

舊的東西

reset_default_graph,但不是公共API(我想應該是,也有人想file an issue的一部分在GitHub上?)

我的解決方法是重置事件:

from tensorflow.python.framework import ops 
ops.reset_default_graph() 
sess = tf.InteractiveSession() 
30

默認情況下,會話是圍繞默認圖構建的。 爲避免在會話中留下死亡節點,您需要控制默認圖形或使用明確的圖形。

  • 要清除默認的圖形,你可以使用tf.reset_default_graph功能。

    tf.reset_default_graph() 
    sess = tf.InteractiveSession() 
    
  • 您還可以構建一個明確的圖形和避免使用默認的。如果使用正常的Session,則需要在構建會話之前完全創建圖形。對於InteractiveSession,你可以申報圖,並用它作爲一個背景下宣佈的進一步變化:

    g = tf.Graph() 
    sess = tf.InteractiveSession(graph=g) 
    with g.asdefault(): 
        # Put variable declaration and other tf operation 
        # in the graph context 
        .... 
        b = tf.matmul(A, x) 
        .... 
    
    sess.run([b], ...) 
    

編輯:對於近期版本的tensorflow(1.0+),正確的功能是g.as_default

+2

在tensorflow> = 1.0時,它是'g.as_default()' –

+0

拼寫:在with語句中,你忘記了g.as_default() – user3750988

+0

中的下劃線,很高興我找到了這個答案。一直在讓我瘋狂... –

3

IPython/Jupyter筆記本電腦在單元運行之間保持狀態。

創建一個自定義圖表:

def main(): 
    # Define your model 
    data = tf.placeholder(...) 
    model = ... 

with tf.Graph().as_default(): 
    main() 

一旦跑了,圖形被清除。