轉載 https://blog.csdn.net/duanlianvip/article/details/98626111
tf.reset_default_graph函數用於清除默認圖形堆棧並重置全局默認圖形。
1、無tf.reset_default_graph
import tensorflow as tf # 執行完 with 里邊的語句之后,這個 conv1/ 和 conv2/ 空間還是在內存中的。這時候如果再次執行此代碼,就會再生成其他命名空間 with tf.name_scope('conv1') as scope: weights1 = tf.Variable([1.0, 2.0], name='weights') bias1 = tf.Variable([0.3], name='bias') # 下面是在另外一個命名空間來定義變量的 with tf.name_scope('conv2') as scope: weights2 = tf.Variable([4.0, 2.0], name='weights') bias2 = tf.Variable([0.33], name='bias') # 所以,實際上weights1 和 weights2 這兩個引用名指向了不同的空間,不會沖突 print(weights1.name) print(weights2.name) print(bias1.name) print(bias2.name)
在再次執行的過程中,都會在上一次執行的基礎生成新的張量。
2、有 tf.reset_default_graph()
import tensorflow as tf tf.reset_default_graph() # 執行完 with 里邊的語句之后,這個 conv1/ 和 conv2/ 空間還是在內存中的。這時候如果再次執行此代碼,就會再生成其他命名空間 with tf.name_scope('conv1') as scope: weights1 = tf.Variable([1.0, 2.0], name='weights') bias1 = tf.Variable([0.3], name='bias') # 下面是在另外一個命名空間來定義變量的 with tf.name_scope('conv2') as scope: weights2 = tf.Variable([4.0, 2.0], name='weights') bias2 = tf.Variable([0.33], name='bias') # 所以,實際上weights1 和 weights2 這兩個引用名指向了不同的空間,不會沖突 print(weights1.name) print(weights2.name) print(bias1.name) print(bias2.name)
無論執行多少次生成的張量始終不變。換句話說就是:tf.reset_default_graph函數用於清除默認圖形堆棧並重置全局默認圖形。