TypeError:'Tensor'对象不能解释为整数

时间:2017-01-22 07:31:04

标签: python variables tensorflow size shape

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

# 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]

它有同样的错误。

2 个答案:

答案 0 :(得分:3)

不确定你想在这里实现什么。 looptf.Tensorrange期望integer为参数,因此出错。如果您只想打印5次,为什么不设置循环数值为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

答案 1 :(得分:2)

tf.size()没有为您提供值或列表。

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

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

...

也许,试试这个。