このページは Cloud Translation API によって翻訳されました。
Switch to English

tf.cond

TensorFlow 1つのバージョン GitHubの上のソースを表示

戻りtrue_fn()述語場合pred他に真であるfalse_fn()

ノートPCで使用されます

チュートリアルで使用されます

true_fnfalse_fn出力テンソルの両方のリターンリストを。 true_fnfalse_fn出力の同じ非ゼロの数と型を持っている必要があります。

この動作はTensorFlowのデータフローモデルと一致しているが、それはしばしばlazierセマンティクスを期待されるユーザーを驚かせました。以下の簡単なプログラムを考えてみましょう:

 z = tf.multiply(a, b)
result = tf.cond(x < y, lambda: tf.add(x, z), lambda: tf.square(y))
 

場合x < y tf.add動作が実行され、 tf.square動作が実行されません。以来z 、少なくとも一方の分岐のために必要とされるcondtf.multiply操作は常に無条件に実行されます。

ことを注意cond呼び出しがtrue_fnfalse_fn 正確に一度 (の呼び出し内部condはなく、すべての中Session.run() cond一緒にステッチ中に作成されたグラフの断片true_fnfalse_fn右ブランチがの値に応じて実行されることを保証するために、いくつかの追加のグラフのノードとの通話pred

tf.condに実装され支持体は、構造体を入れ子にtensorflow.python.util.nest 。どちらもtrue_fnfalse_fn同じ(おそらくネストした)値リストの構造、タプル、および/または名前付きタプルを返す必要があります。シングルトンリストとタプルは、この唯一の例外を形成する:によって返されたときにtrue_fnおよび/またはfalse_fn 、彼らは、単一の値に暗黙的にアンパックされます。

pred 結果を返すべきかどうかを決定スカラーtrue_fn又はfalse_fn
true_fn PREDがtrueの場合に実行する呼び出し可能。
false_fn PREDがfalseの場合に実行する呼び出し可能。
name 返されたテンソルのためのオプションの名前の接頭辞。

テンソルは、いずれかの呼び出しによって返さtrue_fnまたはfalse_fn 。呼び出し可能オブジェクトはシングルトンリストを返す場合は、要素はリストから抽出されます。

TypeError 場合true_fnまたはfalse_fn呼び出すことはできません。
ValueError もしtrue_fnfalse_fnテンソルの同じ数を返す、または異なる種類のテンソルを返しません。

例:

 x = tf.constant(2)
y = tf.constant(5)
def f1(): return tf.multiply(x, 17)
def f2(): return tf.add(y, 23)
r = tf.cond(tf.less(x, y), f1, f2)
# r is set to f1().
# Operations in f2 (e.g., tf.add) are not executed.