今天我們來認識TensorFlow下的scope命名方法~
TensorFlow中有兩個作用域函數專門用來處理變數共享的需求問題 (生成影像和真實影像經過判別器的時候,需要共享一套變量
),分別為 variable_scope (變數域) 和 name_scope (命名域);這兩個作用域函數通常會與兩個建立/呼叫變數的函數搭配使用(下列兩個函數)。
tf.variable_scope(<scope_name>)
tf.get_variable(<name>, <shape>, <initializer>)
(這裡會使用 tf.get_variable() 而不是 tf.Varible(),是因為前者擁有一個變數檢查機制,會自動偵測已經存在的變數是否設定為共享變數,如若還沒有設定成共享變量,TensorFlow在運行到第二個相同變數名稱的變數時,會顯示錯誤訊息。)
variable_scope、name_scope兩者差異 :
前者透過可以設定重用標誌以及初始化方式來影響域下的變數;後者作用於操作。
這兩種作用域,在使用 tf.Variable()
方式建立的變量,有相同的效果(皆會在變數名稱前面加上域名稱)。
variable_scope : (可以透過 tf.name_scope 或 tf_scope 建立)
能夠達到重複利用變數的效果。
name_scope : (可以透過 tf.variable_scope 或 tf.variable_op_scope 建立)