【Tensorflow】變量管理:tf.get_variable與tf.variable_scope

內容整理自: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=Falsereuse=Nonetf.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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章