类型错误:无法将“张量”对象解释为整数。

9
我想根据数组的大小运行循环,如何在tensorflow中实现?例如
# 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五次,但它显示循环是张量对象,不能作为整数处理。 我尝试将循环变量取为
loop = tf.cast(tf.size(a),tf.int32),
loop = tf.shape_n(a),
loop = tf.shape(a)[0]

它出现了相同的错误。

2个回答

3

我不太确定你想要在这里实现什么。 loop 是一个 tf.Tensor,而 range 需要一个 integer 作为参数,因此出现了错误。如果你只想打印 a 5 次,为什么不直接将 loop 设置为数字值 5 呢?

否则,以下代码应该可以工作,因为 loop.eval() 返回的是 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

2

tf.size()并不会给你一个值或列表。

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

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

...

也许,试试这个。

1
我在上面的答案中使用了tf.shape代替tf.size。 - Raady

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接