2017-01-22 20 views
2

配列のサイズに基づいてループを実行しようとしています。どのようにテンソルフローでそれを行うには?例えば、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] 

としてループ変数を取って試してみました。

答えて

2

あなたがここで達成したいことは本当にわかりません。 looptf.Tensorであり、rangeは引数としてintegerを想定しているため、エラーです。 5回だけ印刷したいのであれば、ループを数値5に設定するのはなぜですか?あなたはTFグラフを複数回実行したくない場合は

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.while_loopを見てみましょう:

そうでない場合は、次のコードは5ですlooploop.eval()戻り値として、動作するはずです。

1

tf.size()はあなたの価値やリストを与えるものではありません。

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

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

... 

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

+1

私は上記の答えでtf.sizeの代わりにtf.shapeを使用しました。 – RDK

関連する問題