web-dev-qa-db-ja.com

TypeError: 'Tensor'オブジェクトを整数として解釈できません

配列のサイズに基づいてループを実行しようとしています。テンソルフローでそれを行う方法は?例えば

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

同じエラーがあります。

6
RDK

ここで何を達成したいのかよくわかりません。 loopは_tf.Tensor_であり、rangeは引数として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 を参照してください。

3
guinny

tf.size()は値やリストを提供しません。

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

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

...

おそらく、これを試してみてください。

2
Shobeir