tensorflow
Verwendung der if-Bedingung innerhalb des TensorFlow-Diagramms mit tf.cond
Suche…
Parameter
Parameter | Einzelheiten |
---|---|
pred | ein TensorFlow-Tensor vom Typ bool |
fn1 | eine aufrufbare Funktion ohne Argument |
fn2 | eine aufrufbare Funktion ohne Argument |
Name | (optional) Name für die Operation |
Bemerkungen
-
pred
kann nicht nurTrue
oderFalse
, es muss ein Tensor sein - Die Funktion
fn1
undfn2
sollte die gleiche Anzahl von Ausgaben mit denselben Typen zurückgeben.
Grundlegendes Beispiel
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.
Wenn f1 und f2 mehrere Tensoren zurückgeben
Die beiden Funktionen fn1
und fn2
können mehrere Tensoren zurückgeben, sie müssen jedoch die gleiche Anzahl und Typen von Ausgaben zurückgeben.
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.]
Definieren und Verwenden der Funktionen f1 und f2 mit Parametern
Sie können Parameter mit Hilfe von Lambda an die Funktionen in tf.cond () übergeben. Der Code ist wie folgt.
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))
Dann kannst du es als brüllen nennen:
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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow