TensorFlow中的name_scope和variable_scope
阿新 • • 發佈:2018-12-18
1、tf.Variable() 和 tf.get_variable()
(1)tf.Variable()會自動檢測命名衝突並自行處理。
import tensorflow as tf sess = tf.Session() var1 = tf.Variable([1.2, 3.4], name = 'var') var2 = tf.Variable([2.2, 5.5], name = 'var') sess.run(tf.global_variables_initializer()) print(var1.name, sess.run(var1)) print(var2.name, sess.run(var2)) ### 執行結果: var:0 [1.2 3.4] var_1:0 [2.2 5.5]
(2)tf.get_variable()有一個變數檢測機制,會檢測已經存在的變數是否設定為共享變數,如果已經存在該變數且沒有被設定為共享變數,則TensorFlow執行到第二個變數時會報錯。
import tensorflow as tf sess = tf.Session() var1 = tf.get_variable(name = 'get_var', shape = [2,3]) var2 = tf.get_variable(name = 'get_var', shape = [2,3]) sess.run(tf.global_variables_initializer()) print(var1.name, sess.run(var1)) print(var2.name, sess.run(var2)) ## 執行結果: ValueError: Variable get_var already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at: File "<ipython-input-1-b4ded7fba4ad>", line 3, in <module>