假设我有以下代码:
import tensorflow as tf
with tf.variable_scope('Embedding'):
embd = tf.get_variable('embedding_matrix', [100, 10], dtype = tf.float32)
我想在新范围内重用名称为embedding_matrix
的张量:
with tf.variable_scope('not_related'):
with tf.variable_scope('Embedding', reuse = True) as scope:
# I want the name of 'call_embd' be 'Embedding/embedding_matrix
# but not 'not_related/Embedding/embedding_matrix'
call_embd = tf.get_variable('embedding_matrix')
任何方式让call_embd
命名为Embedding/embedding_matrix
?
根据你的澄清评论,听起来你正在混淆variable_scope
和name_scope
。
在信中:
variable_scope
用于避免代码的不同部分无意中重用相同的变量。name_scope
用于逻辑分组操作。所以在你的情况下,你会使用类似的东西:
with tf.name_scope('Encoding'):
with tf.variable_scope('Embedding'):
embd = tf.get_variable('embedding_matrix', [100, 10], dtype = tf.float32)
# ... use this var
# ... later ...
with tf.name_scope('Decoding'):
with tf.variable_scope('Embedding', reuse=True):
embd = tf.get_variable('embedding_matrix')
# ... reuse this var
更多关于name_scope
和variable_scope
之间(公认的令人困惑的)区别可以找到here。