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
-
predkan inte bara varaTrueellerFalse, det måste vara en tensor - Funktionen
fn1ochfn2ska 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