NameError:在封闭范围中赋值之前引用的自由变量'ar'

时间:2017-09-23 09:49:44

标签: python tensorflow session-variables

我使用tensorflow在简单代码中使用tf.while_loop。它给了我这个错误

  

ar = tf.cond(tf.less(arg [i],1),lambda:tf.concat([ar,[1.0]],axis = 0),lambda:tf.concat([ar,[ 0.0]],轴= 0))

     

NameError:在封闭范围

中赋值之前引用的自由变量'ar'

代码::

a = tf.constant([[[1,2],[4,3]],[[5,6],[8,7]]])

arg = tf.argmax(a, axis =2)

arg = tf.cast(tf.reshape(arg,[4]), tf.int32)



i =tf.constant(0)
c = lambda i: tf.less(i,4)

def body(i):

    ar = tf.cond(tf.less(arg[i], 1), lambda: tf.concat([ar,[1.0]], axis = 0), lambda: tf.concat([ar,[0.0]], axis = 0))

    print(i)

    i = tf.add(i,1)

    return i

ar = tf.constant([1])

r = tf.while_loop(c,body,[i])

sess =tf.InteractiveSession()
sess.run(tf.global_variables_initializer())

sess.run(r)

print(sess.run(ar))

1 个答案:

答案 0 :(得分:0)

添加

ar = tf.cond(tf.less(arg[i], 1), lambda: tf.concat([ar,[1.0]], axis = 0), lambda: tf.concat([ar,[0.0]], axis = 0))

以上

body

在{{1}}函数