我是TensorFlow的初学者,所以我只想尝试运行Fibonacci算法。
到目前为止,我写了这段代码:
a=tf.constant(1)
b=tf.Variable(1)
print(a)
print(b)
with tf.Session() as session:
init_op = tf.initialize_all_variables()
session.run(init_op)
for i in range(0, 10):
sum_value = tf.add(a, b)
assign_op1=tf.assign(a, b)
assign_op2=tf.assign(b, sum_value)
session.run(assign_op1)
session.run(assign_op2)
print(sum_value)
对于它,我收到此错误消息:
Tensor("Const_11:0", shape=(), dtype=int32)
<tensorflow.python.ops.variables.Variable object at 0x7f0d446cfbd0>
TypeErrorTraceback (most recent call last)
<ipython-input-32-25b7f828d7c6> in <module>()
10 for i in range(0, 10):
11 sum_value = tf.add(a, b)
---> 12 assign_op1=tf.assign(a, b)
13 assign_op2=tf.assign(b, sum_value)
14 session.run(assign_op1)
/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_state_ops.pyc in assign(ref, value, validate_shape, use_locking, name)
38 return _op_def_lib.apply_op("Assign", ref=ref, value=value,
39 validate_shape=validate_shape,
---> 40 use_locking=use_locking, name=name)
41
42
/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/op_def_library.pyc in apply_op(self, op_type_name, name, **keywords)
515 raise TypeError(
516 "Input '%s' of '%s' Op requires l-value input" %
--> 517 (input_name, op_type_name))
518 input_types.extend(types)
519 else:
TypeError: Input 'ref' of 'Assign' Op requires l-value input
代码有什么问题?
答案 0 :(得分:1)
在行tf.assign(a, b)
中,您指示Tensorflow将b
的值分配给变量a
。但是,您在第一行中将a
声明为tf.constant
- 并且您无法为常量指定新值。正如Tensorflow所写,'Assign' Op
的第一个参数需要 l-value input ,换句话说,需要修改的东西。常量不是l值输入,而是r值输入。
如果您用a=tf.Variable(1)
替换第一行,那么您将拥有一个可以成功执行的程序。