TypeError: 'Tensor' object cannot be interpreted as an integer

TypeError: 'Tensor' object cannot be interpreted as an integer

我正在尝试 运行 基于数组大小的循环。如何在张量流中做到这一点?例如

# input pipeline with all files available in the folder
a = tf.Variable([1,2,3,4,5],dtype = tf.int32)
loop = tf.size(a)
....
for i in range(loop):
    print(sess.run(a))

我想打印数组 a 5 次。但它说循环是一个张量对象,不能作为整数。 我尝试将循环变量作为

loop = tf.cast(tf.size(a),tf.int32),
loop = tf.shape_n(a),
loop = tf.shape(a)[0]

同样的错误。

tf.size() 没有给你一个值或列表。

a = tf.Variable([1,2,3,4,5],dtype = tf.int32)

v = a.get_shape()
loop = v.num_elements()

...

也许,试试这个。

不太确定你想在这里实现什么。 loop 是一个 tf.Tensor 并且 range 期望一个 integer 作为参数,因此错误。如果只想打印5次a,为什么不把loop设置成数值5呢?

否则,下面的代码应该可以工作,因为 loop.eval() returns loop 的值是 5:

a = tf.Variable([1,2,3,4,5],dtype = tf.int32)
loop = tf.size(a)
....
for i in range(loop.eval()):
    print(sess.run(a))

如果不想多次执行TF图,看一下tf.while_loop