配列のサイズに基づいてループを実行しようとしています。テンソルフローでそれを行う方法は?例えば
# 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]
同じエラーがあります。
ここで何を達成したいのかよくわかりません。 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 を参照してください。
tf.size()
は値やリストを提供しません。
a = tf.Variable([1,2,3,4,5],dtype = tf.int32)
v = a.get_shape()
loop = v.num_elements()
...
おそらく、これを試してみてください。