tensorflowエッセイ-条件文-tf.case

2357 ワード

tf.case tf.case( pred_fn_pairs, default=None, exclusive=False, strict=False, name=‘case’ )
caseアクションの作成
pred_fn_pairsパラメータは、Nサイズの辞書またはpairsのリストです.各ペアには、1つのブールスカラーtensorと1つのpython呼び出し可能な関数アイテムが含まれており、条件がTrueの場合、対応する関数アイテムで作成されたtensorsが返されます.pred_fn_pairsペアのすべての呼び出し子およびデフォルト値(指定されている場合)は、同じ数とタイプのテンソルを返す必要があります.
exclusiveTrueの場合、すべての述語が計算され、複数の述語がTrueの場合、例外が発生します.exclusiveFalseの場合、Trueとして評価された最初の述語で実行が停止し、対応する関数によって生成されたテンソルが直ちに返されます.述語がtrueとして評価されていない場合、この操作はデフォルトで生成されたテンソルを返します.
tf.caseはtensorflowでサポートする.python.util.nestで実装されたネスト構造.すべての呼び出しは、同じ(ネスト可能な)リスト、メタグループ、および/または名前付きメタグループの値構造を返さなければなりません.単一の例のリストとメタグループは、呼び出し可能なプログラムによって返されると、単一の値に暗黙的にパケット解除される唯一の例外を形成します.strict=Trueを渡すことで、この動作を無効にします.
無秩序辞書がpred_にある場合fn_pairsが使用されると、条件テストの順序が保証されません.いずれにしても、条件分岐で変数が固定された順序で作成されるように、順序保証は決定される.
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Mon Aug 27 11:16:32 2018
@author: myhaspl
"""

import tensorflow as tf
x = tf.constant(7)
y =  tf.constant(27)
f1 = lambda: tf.constant(17)
f2 = lambda: tf.constant(23)
r = tf.case([(tf.less(x, y), f1)], default=f2)
#if (x < y) return 17;
#else return 23;
sess=tf.Session()
with sess:

    print sess.run(r) 

17
Example 2:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Mon Aug 27 11:16:32 2018

"""

import tensorflow as tf
x = tf.constant(7)
y =  tf.constant(27)
z = tf.constant(21)
def f1(): 
    return tf.constant(17)
def f2(): 
    return tf.constant(23)
def f3(): 
    return tf.constant(-1)
r = tf.case({tf.less(x, y): f1, tf.greater(x, z): f2},default=f3, exclusive=True);

sess=tf.Session()
with sess:

    print sess.run(r)

次のようになります.
if (x < y && x > z) raise OpError(“Only one predicate may evaluate true”); if (x < y) return 17; else if (x > z) return 23; else return -1;
パラメータ:
pred_fn_pairs:辞書またはpairsのリスト(booleanスカラーおよび呼び出し可能な関数からテンソルリストを返す)default:デフォルトはtensorsリストexclusiveを返します:Trueに対して最大1つの述語がTrue strictであることを示す場合:booleanは'strict'モードnameを開くか閉じる:アクションの名前(オプション)を返します:
最初の述語がTrueの場合に返されるtensorsを実行し、述語がTrueの場合はdefaultを返します.
Raises:
TypeError: pred_fn_pairsはリストや辞書ではありませんTypeError:pred_fn_pairsはリストですが、2つの要素を含まないメタグループTypeError:fns[i]はiの呼び出しではありません.またはdefaultは呼び出し可能ではありません.