繰り返しの回数がテンソルの値に依存するforループが必要です。たとえば:どのようにテンソルを範囲としてループを実行できますか? (テンソルフローで)
for i in tf.range(input_placeholder[1,1]):
# do something
私は次のエラーを取得するしかし:
"はTypeError: 'テンソル' オブジェクトが反復可能ではありません"
私は何をすべきか?
繰り返しの回数がテンソルの値に依存するforループが必要です。たとえば:どのようにテンソルを範囲としてループを実行できますか? (テンソルフローで)
for i in tf.range(input_placeholder[1,1]):
# do something
私は次のエラーを取得するしかし:
"はTypeError: 'テンソル' オブジェクトが反復可能ではありません"
私は何をすべきか?
tf.range
を含むTensorFlow Python API関数の戻り値の型は、Tensor
です。 Tensor
は、計算を表すグラフのノードへの記号ハンドルです。実際の計算は、Tensor
のeval
メソッドを呼び出すか、またはのrun
メソッドにオブジェクトを渡すことで行います。あなたの場合、おそらくあなたが意図したのはnumpy
のrange
を繰り返し処理するだけでした。あなたがループ(tf.while_loop
)ながらtensorflowを使用する必要があります。これを行うために
for in in np.range(...):
# do something
次のように:
i = tf.constant(0)
while_condition = lambda i: tf.less(i, input_placeholder[1, 1])
def body(i):
# do something here which you want to do in your loop
# increment i
return [tf.add(i, 1)]
# do the loop:
r = tf.while_loop(while_condition, body, [i])
私のために働く。 Tnx! – anamar
ループに変数があるとどうなりますか?参照エラーが発生する https://stackoverflow.com/questions/47760429/tensorflow-local-variable-lstm-state-referenced-before-assignment – kong
これはうまくいくようですが、Tensorflowのアドバイスと直接矛盾するようです。 while_loopは、parallel_iterations> 0の場合と同じ結果を返します。これは競合状態を設定して、 "n"と "n * parallel_iterations"の間のどこかで評価されるループにつながるようです –
をいいえ、これは私が探していますものではありません。私はkが入力に基づいて決定されている間にk回動作するループを望む。入力はテンソルプレースホルダーです。 –
実際、私は2つの入力を持っています。最初の行列は行列であり、2番目の行列は特定の演算を何回実行すべきかです。 –
テンソルフローを作成してnumpy呼び出しを行うと、GPUでopが実行されないようにするため、GPUに準拠したテンソルフロー操作しか持たないことが重要です。 –