我无法理解应该如何使用变量和范围。这是我尝试重新使用函数内定义的变量失败的尝试:
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中变量和范围的概念。
答案 0 :(得分:0)
在上面的代码中,没有人评估作业。这个修复了:
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所需的子图中。