tensorflow
Använd om villkoret i TensorFlow-diagrammet med tf.cond
Sök…
parametrar
Parameter | detaljer |
---|---|
pred | en TensorFlow tensor av typ bool |
fn1 | en kallbar funktion utan argument |
fn2 | en kallbar funktion utan argument |
namn | (valfritt) namn för operationen |
Anmärkningar
-
pred
kan inte bara varaTrue
ellerFalse
, det måste vara en tensor - Funktionen
fn1
ochfn2
ska returnera samma antal utgångar, med samma typer.
Grundläggande exempel
x = tf.constant(1.)
bool = tf.constant(True)
res = tf.cond(bool, lambda: tf.add(x, 1.), lambda: tf.add(x, 10.))
# sess.run(res) will give you 2.
När f1 och f2 returnerar flera tensorer
De två funktionerna fn1
och fn2
kan returnera flera tensorer, men de måste returnera exakt samma antal och typer av utgångar.
x = tf.constant(1.)
bool = tf.constant(True)
def fn1():
return tf.add(x, 1.), x
def fn2():
return tf.add(x, 10.), x
res1, res2 = tf.cond(bool, fn1, fn2)
# tf.cond returns a list of two tensors
# sess.run([res1, res2]) will return [2., 1.]
definiera och använda funktioner f1 och f2 med parametrar
Du kan skicka parametrar till funktionerna i tf.cond () med lambda och koden är som bellow.
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
z = tf.placeholder(tf.float32)
def fn1(a, b):
return tf.mul(a, b)
def fn2(a, b):
return tf.add(a, b)
pred = tf.placeholder(tf.bool)
result = tf.cond(pred, lambda: fn1(x, y), lambda: fn2(y, z))
Då kan du kalla det som bällande:
with tf.Session() as sess:
print sess.run(result, feed_dict={x: 1, y: 2, z: 3, pred: True})
# The result is 2.0
print sess.run(result, feed_dict={x: 1, y: 2, z: 3, pred: False})
# The result is 5.0
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow