在tf.while_loop

时间:2018-08-24 12:48:49

标签: tensorflow

在Tensorflow 1.10中,我试图了解tf.while_loop的工作方式。在下面的代码中,有两个变量被发送到循环中:countxcount用于确保循环被调用10次。然后,x用于存储循环中要处理的某些数据。我希望能够在循环过程中更改x的某些元素的值。

这是我的代码:

def loop(count, x):
    x[0].assign(5)
    count = tf.add(count, 1)


count = tf.constant(0, dtype=tf.int32)
x = tf.Variable(tf.zeros([10]), dtype=tf.float32)
cond = lambda count, x: tf.less(count, 10)
count, x = tf.while_loop(cond, loop, [count, x])

sess = tf.Session()
sess.run(x.initializer)

print(sess.run(x))

因此,在第x[0].assign(5)行中,我想将x的第0个元素分配为值5。然后在循环的所有10次迭代中完成此操作。 (是的,这是没有意义的,但这只是要调试的玩具代码。)

但是,运行此代码会出现以下错误:

ValueError: Sliced assignment is only supported for variables

它引用x[0].assign(5)的行。因此,似乎无法在此循环中分配x的元素。

但是,xtf.Variable,如果我要在循环外运行操作x[0].assign(5),它可以正常工作。因此,当x发送到循环中时,似乎改变了x的类型,使得它不再能够以这种方式进行切片。

有帮助吗?谢谢。

0 个答案:

没有答案