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 vara True eller False , det måste vara en tensor
  • Funktionen fn1 och fn2 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