在张量流中重用变量



我不明白应该如何使用变量和作用域。这是我尝试重新使用函数中定义的变量的失败尝试:

def basedOnVariableFunctAffectingVar(a):
    v = tf.get_variable("nameV2",
                        dtype=tf.float64,
                        initializer=tf.constant([0.0,1],
                                                dtype=tf.float64))
    aa = tf.constant(np.array([a,a]))
    t = v + aa
    v.assign(t)
    return t

然后我调用该函数:

with tf.variable_scope("Scope0"):
    res1 = basedOnVariableFunctAffectingVar(2.0)
with tf.Session() as session:
    session.run(tf.global_variables_initializer())
    result1 = session.run(res1)
    with tf.variable_scope("Scope0",
                           reuse=True):
        a = tf.get_variable("nameV2", dtype=tf.float64)
    print(session.run(a))
    print(result1)

令人惊讶的是,输出是:

[0. 1. [2.3.]

我期待

[2. 3. [2.3.]

感谢任何人澄清 TF 中变量和范围的概念。

在上面的代码中,没有人评估分配。这将修复:

def basedOnVariableFunctAffectingVar(a):
    v = tf.get_variable("nameV2",
                        dtype=tf.float64,
                        initializer=tf.constant([0.0,1],
                                                dtype=tf.float64))
    aa = tf.constant(np.array([a,a]))
    t = v.assign(v + aa)
return t

必须评估分配变量的结果,并且在问题的函数中,评估不在运行 res1 所需的子图中。

相关内容

  • 没有找到相关文章

最新更新