內容整理自:Tensorflow_實戰Google深度學習框架(第二版)
- 通過
tf.variable_scope
生成一個上下文管理器。
with tf.variable_scope("wy"):
w = tf.get_variable("v",[1],initializer =tf.constant_initializer(1.0))
#以上wy空間中已有w變量,以下代碼再定義w變量會出錯
with tf.variable_scope("wy"):
w = tf.get_variable("w",[1])
-
在生成上下文管理器時,若設置
reuse=True
,tf.variable_scope將只能獲取已經創建過的變量,如果空間中沒有變量將會報錯。 -
如果
reuse=False
或reuse=None
,tf.get_variable
將創建新的變量。- 同名變量已存在,會報錯。
-
tf.variable_scope
可以嵌套。- 在一個上下文管理器中新建一個嵌套的上下文管理器,若沒有定義reuse,則與外面一層保持一致。
-
可以通過
tf.get_variable_scope().reuse
獲得當前上下文管理器中的reuse參數取值。 -
在命名空間內創建的變量會帶上這個命名空間名作爲前綴,以下代碼爲例。
v1=tf.get_variable("v",[1])
print v1.name
# 輸出 v:0
# "v"表示變量名稱,":0"表示這個變量是生成變量這個運算的第一個結果
with tf.variable_scope("wy"):
v2 = tf.get_variable("v",[1])
print v2.name #輸出 wy/v:0