2017-08-09 26 views
1

テンソルフローでtf.while_loopを終了するために複数の条件を定義することは可能ですか?例えば、2つの特定の値を達成する2つのテンソル値に依存する。例えば。 i==2およびj==3tf.while_loopで複数の条件を定義することは可能ですか

また、本文にいくつかのコードブロックを含めることはできますか?ドキュメントのすべての例では、本体は値またはタプルを返す単一のステートメントに似ているようです。私はいくつかの "逐次"のステートメントを本文に実行したいと思います。

答えて

2

tf.while_loopはブールテンソルを返さなければならない汎用コール可能(defで定義されたPython関数)またはlambdaを受け入れます。

あなたは、それゆえ、tf.logical_andtf.logical_or、などのlogical operatorsを使用した状態の本体内のチェーン複数の条件...

さえ

bodyは、このようにあなたがラムダに制限されていない一般のpython呼び出し可能であることができます単一のステートメント機能が含まれます。そのような

何かが完全に許容可能であるとうまく機能:詳細な説明のための

import tensorflow as tf 
import numpy as np 


def body(x): 
    a = tf.random_uniform(shape=[2, 2], dtype=tf.int32, maxval=100) 
    b = tf.constant(np.array([[1, 2], [3, 4]]), dtype=tf.int32) 
    c = a + b 
    return tf.nn.relu(x + c) 


def condition(x): 
    x = tf.Print(x, [x]) 
    return tf.logical_or(tf.less(tf.reduce_sum(x), 1000), tf.equal(x[0, 0], 15)) 


x = tf.Variable(tf.constant(0, shape=[2, 2])) 
result = tf.while_loop(condition, body, [x]) 

init = tf.global_variables_initializer() 
with tf.Session() as sess: 
    sess.run(init) 
    print(sess.run(result)) 
+0

感謝 –

関連する問題