2017-01-20 16 views
0

在TensorFlow中,VariableScope類具有original_name_scopename屬性。他們的區別是什麼?我應該什麼時候使用一個呢?我似乎無法找到關於它們的很多文檔。Tensorflow VariableScope:original_name_scope對於名稱

使用案例: 我使用的是tf.get_collection(key, scope)方法。它的第二個參數需要一個字符串,但是我的變量my_scope的類型爲VariableScope。我想這兩個

tf.get_collection(key, my_scope.name) 

tf.get_collection(key, my_scope.original_scope_name) 

。兩者似乎都有效,但我不確定哪個是「正確的」,並且不會在晚些時候給我帶來麻煩。

回答

1

foo.name返回範圍的名稱(String)。另一方面,foo.original_name_scope返回與foo.name相同的字符串,但重新創建範圍時除外。在這種情況下,根據需要,所有子範圍都會附加_#,以便對foo.original_name_scope的所有調用都返回某個範圍的每個實例所特有的內容。

例如,在這個代碼:

with tf.variable_scope('a') as a: 
    print(a.name) 
    print(a.original_name_scope) 
    print(a.original_name_scope) 

with tf.variable_scope('a') as b: 
    print(b.name) 
    print(b.original_name_scope) 

返回

a 
a/ 
a/ 
a 
a_1/ 

注意,要original_name_scope對應於不同範圍的情況下,調用a返回不同的值。

大概這可以讓你區分具有相同名稱的不同範圍實例。