Tensorflow-运行总计
如何在循环的每次迭代后添加数字5 我想这样做:Tensorflow-运行总计,tensorflow,Tensorflow,如何在循环的每次迭代后添加数字5 我想这样做: weight = 0.225 for i in range(10): weight += 5 print (weight) 下面是我在tensorflow中的尝试,但它从不更新权重 import tensorflow as tf def dummy(x): weights['h0'] = tf.add(weights['h0'], 5) res = tf.add(weights['h0'], x) ret
weight = 0.225
for i in range(10):
weight += 5
print (weight)
下面是我在tensorflow中的尝试,但它从不更新权重
import tensorflow as tf
def dummy(x):
weights['h0'] = tf.add(weights['h0'], 5)
res = tf.add(weights['h0'], x)
return res
# build computational graph
a = tf.placeholder('float', None)
d = dummy(a)
weights = {
'h0': tf.Variable(tf.random_normal([1]))
}
# initialize variables
init = tf.global_variables_initializer()
# create session and run the graph
with tf.Session() as sess:
sess.run(init)
for i in range(10):
print (sess.run(d, feed_dict={a: [2]}))
# close session
sess.close()
显然有一个赋值操作符
有一个显式创建的操作用于添加值并将结果分配回输入节点: 您应该使用它而不是
tf.assing
+tf.add
此外,更重要的是,您要理解为什么以前的代码无法工作
weights['h0'] = tf.add(weights['h0'], 5)
res = tf.add(weights['h0'], x)
在第一行,您定义了一个节点add,它的输入是权重['h0']
和5
,并且将这个节点分配给一个python变量权重['h0']
因此,weights['h0']
是一个包含tensorflow节点的python变量
在下一行中,您将在上一个节点和x
之间定义另一个add节点,然后返回此节点
计算图形时,您计算由res
指向的节点,该节点强制计算前一个节点(因为res是由权重['h0']
持有的节点的函数)
问题在于第1
行的赋值是python赋值,而不是tensorflow赋值。
因此,该赋值操作仅在python环境中执行,但在tensorflow图中没有定义赋值节点
注意:当您将与
一起使用时,您正在定义一个上下文管理器来为您处理关闭操作。因此,您可以删除sess.close()
,因为它在您退出该上下文时自动执行
weights['h0'] = tf.add(weights['h0'], 5)
res = tf.add(weights['h0'], x)