2017-01-20 10 views
0

TensorFlowでは、とnameの両方の属性を持っています。彼らの違いは何ですか?また、いつ別のものを使うべきですか?私はそれらについて多くの文書を見つけることができないようです。Tensorflow VariableScope:original_name_scopeと名前

使用例: 私はtf.get_collection(key, scope)メソッドを使用しています。 2番目の引数は文字列を要求しますが、変数my_scopeVariableScopeです。私は

tf.get_collection(key, my_scope.name) 

tf.get_collection(key, my_scope.original_scope_name) 

両方をしようとしています。どちらもうまくいくように見えますが、どちらが「正しい」かわからず、後で問題を起こすことはありません。

答えて

1

foo.nameは、スコープの名前(文字列)を返します。一方、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) 

戻り異なるスコープインスタンスに対応original_name_scopeへの呼び出しは、異なる値を返すことa

a 
a/ 
a/ 
a 
a_1/ 

注。

おそらく、これにより、同じ名前の異なるスコープインスタンスを区別することができます。

関連する問題