Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

tf.py_function

TensorFlow 1 Version Quelltext anzeigen auf GitHub

Wickelt eine Python-Funktion in eine TensorFlow op, die ausgeführt wird es mit Spannung.

in den Notebooks

Wird in der Führung in den Übungen verwendet

Mit dieser Funktion können Berechnungen in einem Graphen als TensorFlow Python Funktionen exprimieren. Insbesondere wickelt es eine Funktion Python func in einer einmal differenzierbar TensorFlow Operation , die es mit gespannter Ausführung ausführt , aktiviert. Als Folge tf.py_function macht es möglich , Steuerfluss unter Verwendung von Konstrukten Python (auszudrücken , if , while , for , etc.), anstelle von TensorFlow Steuerfluß Konstrukten ( tf.cond , tf.while_loop ). Zum Beispiel könnte verwenden Sie tf.py_function das Protokoll huber Funktion zu implementieren:

 def log_huber(x, m):
  if tf.abs(x) <= m:
    return x**2
  else:
    return m**2 * (1 - 2 * tf.math.log(m) + tf.math.log(x**2))

x = tf.compat.v1.placeholder(tf.float32)
m = tf.compat.v1.placeholder(tf.float32)

y = tf.py_function(func=log_huber, inp=[x, m], Tout=tf.float32)
dy_dx = tf.gradients(y, x)[0]

with tf.compat.v1.Session() as sess:
  # The session executes `log_huber` eagerly. Given the feed values below,
  # it will take the first branch, so `y` evaluates to 1.0 and
  # `dy_dx` evaluates to 2.0.
  y, dy_dx = sess.run([y, dy_dx], feed_dict={x: 1.0, m: 2.0})
 

Sie können auch verwenden tf.py_function Ihre Modelle zur Laufzeit - Tools Python zu debuggen, das heißt, können Sie Teile des Codes isolieren , dass Sie debuggen wollen, wickeln Sie sie in Python Funktionen und Einsatz pdb Trace oder print - Anweisungen , wie gewünscht, und wickeln jene Funktionen in tf.py_function .

Weitere Informationen zu den eifrigen Ausführung finden Sie in der Eager Führung .

tf.py_function ist im Geist gleich tf.compat.v1.py_func , aber im Gegensatz zu diesen, die ehemaligen können Sie TensorFlow Operationen in der eingewickelt Python - Funktion verwenden. Insbesondere während tf.compat.v1.py_func läuft nur auf CPUs und wickelt Funktionen , die NumPy Arrays als Eingänge nehmen und NumPy Arrays als Ausgänge zurück, tf.py_function auf GPUs und Wraps Funktionen platziert werden , die als Eingaben Tensoren nehmen, führen TensorFlow Operationen in ihren Körpern und Rückkehr Tensoren als Ausgänge.

Wie tf.compat.v1.py_func , tf.py_function hat folgende Einschränkungen in Bezug auf die Serialisierung und Verteilung:

  • Der Körper der Funktion (dh func ) nicht in einer serialisiert werden GraphDef . Daher sollten Sie diese Funktion nicht verwenden, wenn Sie Ihr Modell zur Serialisierung müssen und es in einer anderen Umgebung wiederherzustellen.

  • Der Betrieb muss sich in demselben Adressraum wie das Python - Programm ausführen, ruft tf.py_function() . Wenn Sie TensorFlow verteilt verwenden, müssen Sie einen Lauf tf.distribute.Server im gleichen Prozess wie das Programm , das nennt tf.py_function() , und Sie müssen in diesem Server (zB mit auf eine Vorrichtung , die erstellten Betätigungsstift with tf.device(): ).

func Eine Python - Funktion , die eine Liste von übernimmt Tensor Objekte mit Elementtypen , die die entsprechenden Übereinstimmungs tf.Tensor Objekte in inp und gibt eine Liste von Tensor Objekten (oder eine einzelne Tensor oder None ) mit Elementtypen , die die entsprechenden Werten in der Abgleichung Tout .
inp Eine Liste von Tensor - Objekte.
Tout Eine Liste oder Tupel von tensorflow Datentypen oder einem einzelnen tensorflow Datentyp , wenn es nur eine Angabe , welche func zurückkehrt; eine leere Liste , wenn kein Wert zurückgegeben wird (dh, wenn der Rückgabewert None ).
name Ein Name für den Betrieb (optional).

Eine Liste von Tensor oder einem einzigen Tensor welche func berechnet; eine leere Liste , wenn func kehrt Keine.