Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

tf.py_function

TensorFlow 1 wersja Zobacz źródło na GitHub

Okłady funkcji Pythona do TensorFlow op tym wykonuje go z niecierpliwością.

Stosowany w notebookach

Używany w przewodniku Używany w samouczków

Funkcja ta umożliwia ekspresję obliczeń na wykresie TensorFlow jako funkcje Pythona. W szczególności, owija funkcji Pythona func w układze jednoprzejściowym różniczkowalną TensorFlow, który wykonuje się po włączeniu chętnie wykonania. W konsekwencji tf.py_function umożliwia wyrażenie kontroli przepływu przy użyciu konstrukcji Python ( if , while , for itd) zamiast TensorFlow konstruktów sterowania przepływem ( tf.cond , tf.while_loop ). Na przykład, można użyć tf.py_function do realizacji funkcji log Huber:

 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})
 

Można również użyć tf.py_function debugować swoje modele w czasie wykonywania przy użyciu narzędzia Pythona, czyli można wyizolować fragmenty kodu, które chcesz debugować, zawinąć je w funkcji Python i wkładka pdb tracepoints lub drukowania sprawozdań zgodnie z potrzebami i owinąć te funkcje w tf.py_function .

Aby uzyskać więcej informacji na temat realizacji chętny, zobacz Eager instrukcji .

tf.py_function jest w duchu podobnym do tf.compat.v1.py_func , ale w przeciwieństwie do tych ostatnich, byłego pozwala używać operacji TensorFlow w owiniętej funkcji Pythona. W szczególności, podczas tf.compat.v1.py_func działa tylko na procesorach i zawija funkcje, które mają tablice numpy jak wejść i zwracające tablice numpy jak wyjść tf.py_function może być umieszczony na GPU i zawija funkcje, które mają tensory jak wejść, wykonanie TensorFlow operacje w ich ciele i Tensory powrotne jako wyjścia.

Jak tf.compat.v1.py_func , tf.py_function ma następujące ograniczenia w odniesieniu do serializacji i dystrybucji:

  • Ciało funkcji (tj func ) nie zostaną w odcinkach w GraphDef . Dlatego też, nie należy korzystać z tej funkcji, jeśli chcesz serializacji modelu i przywrócić go w innym środowisku.

  • Operacja musi pracować w tej samej przestrzeni adresowej programu Pythona, który wywołuje tf.py_function() . Jeśli używasz rozłożone TensorFlow, należy uruchomić tf.distribute.Server w tym samym procesie, co program, który wywołuje tf.py_function() i trzeba przypiąć utworzony pracę z urządzeniem w tym serwerze (np używając with tf.device(): ).

func Pythona funkcją, która przyjmuje listę Tensor przedmiotów o typów elementów, które pasują do odpowiednich tf.Tensor obiektów w inp i zwraca listę Tensor przedmiotów (lub jednego Tensor lub None ) mającą typów elementów, które pasują do odpowiadających im wartości w Tout .
inp Lista Tensor obiektów.
Tout Listę lub krotką typów danych tensorflow lub jednego typu danych tensorflow jeśli jest tylko jedna, wskazując, jakie func powraca; pusta lista, jeśli wartość nie jest zwracana (czyli jeśli zwracana jest wartość None ).
name Nazwę operacji (opcjonalnie).

Lista Tensor lub pojedynczego Tensor które func oblicza; pusta lista jeżeli func powraca Brak.