Python 类型错误:输入';参考';属于';分配';Op需要l值输入

Python 类型错误:输入';参考';属于';分配';Op需要l值输入,python,tensorflow,Python,Tensorflow,我是TensorFlow的初学者,所以我只是尝试运行斐波那契算法 到目前为止,我编写了以下代码: 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

我是TensorFlow的初学者,所以我只是尝试运行斐波那契算法

到目前为止,我编写了以下代码:

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
张量(Const_11:0,shape=(),dtype=int32) TypeErrorTraceback(最近一次呼叫上次) 在() 对于范围(0,10)内的i,为10: 11求和值=tf.加(a,b) --->12分配(a,b) 13赋值op2=tf.赋值(b,求和值) 14会话。运行(分配操作1) /分配中的usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_state_ops.pyc(参考,值,验证形状,使用锁定,名称) 38返回定义库应用(“赋值”,ref=ref,value=value, 39验证形状=验证形状, --->40使用锁定=使用锁定,名称=名称) 41 42 /apply_op中的usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/op_def_library.pyc(self,op_type_name,name,**关键字) 515上升类型错误( 516“输入'%s'或'%s'操作需要l值输入”% -->517(输入名称、操作类型名称)) 518输入类型。扩展(类型) 519其他: 类型错误:“分配”操作的输入“参考”需要l值输入
代码有什么问题?

tf.assign(a,b)
行中,您正在指示Tensorflow将
b
的值分配给变量
a
。但是,您在第一行中将
a
声明为
tf.constant
,并且不能为常量指定新值。正如Tensorflow所写,
'Assign'Op
的第一个参数需要l值输入,或者换句话说,可以修改。常数不是l值输入,而是r值输入

如果您将第一行替换为
a=tf.Variable(1)
,那么您的程序将成功执行