有什么办法不继承父变量_cope?

问题描述 投票:1回答:1

假设我有以下代码:

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

python tensorflow
1个回答
0
投票

根据你的澄清评论,听起来你正在混淆variable_scopename_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_scopevariable_scope之间(公认的令人困惑的)区别可以找到here

© www.soinside.com 2019 - 2024. All rights reserved.