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

tf.numpy_function

Wersja TensorFlow 1 Wyświetl źródło na GitHub

Zawija funkcję Pythona i używa jej jako operacji TensorFlow.

Używany w notebookach

Używany w samouczkach

Biorąc pod uwagę funkcję Pythona, func zawija tę funkcję jako operację w funkcji TensorFlow. func musi przyjmować tablice numpy jako argumenty i zwracać tablice numpy jako dane wyjściowe.

Poniższy przykład tworzy wykres TensorFlow z np.sinh() jako operacją na wykresie:

def my_numpy_func(x):
  # x will be a numpy array with the contents of the input to the
  # tf.function
  return np.sinh(x)
@tf.function(input_signature=[tf.TensorSpec(None, tf.float32)])
def tf_function(input):
  y = tf.numpy_function(my_numpy_func, [input], tf.float32)
  return y * y
tf_function(tf.constant(1.))
<tf.Tensor: shape=(), dtype=float32, numpy=1.3810978>

Porównanie do tf.py_function : tf.py_function i tf.numpy_function są bardzo podobne, z tym wyjątkiem, że tf.numpy_function przyjmuje tablice numpy, a nie tf.Tensor s. Jeśli chcesz, aby funkcja zawierała tf.Tensors i wszystkie operacje TensorFlow wykonywane w funkcji były zróżnicowane, użyj tf.py_function .

  • Ciało funkcji (tj func ) nie zostaną w odcinkach w tf.SavedModel . Dlatego nie należy używać tej funkcji, jeśli chcesz serializować model i przywrócić go w innym środowisku.

  • Operacja musi działać w tej samej przestrzeni adresowej, co program w języku Python, który wywołuje tf.numpy_function() . Jeśli korzystasz z rozproszonego TensorFlow, musisz uruchomić tf.distribute.Server w tym samym procesie, co program wywołujący tf.numpy_function , musisz przypiąć utworzoną operację do urządzenia na tym serwerze (np. Używając with tf.device(): ).

  • Ponieważ funkcja przyjmuje tablice numpy, nie można przechodzić gradientów przez funkcję numpy_function. Jeśli potrzebujesz czegoś, co daje się rozróżnić, rozważ użycie tf.py_function.

  • Wynikowa funkcja przyjmuje stan i nigdy nie będzie optymalizowana.

func Funkcja Pythona, która przyjmuje obiekty numpy.ndarray jako argumenty i zwraca listę obiektów numpy.ndarray (lub pojedynczy numpy.ndarray ). Ta funkcja musi akceptować tyle argumentów, ile jest tensorów w inp , a te typy argumentów będą pasować do odpowiednich obiektów tf.Tensor w inp . numpy.ndarray s muszą być zgodne z liczbą i typami zdefiniowanymi Tout . Ważna uwaga: Nie ma gwarancji, że dane wejściowe i wyjściowe numpy.ndarray s func będą kopiami. W niektórych przypadkach ich pamięć podstawowa będzie współdzielona z odpowiednimi tensorami TensorFlow. W miejscu przechowywania lub modyfikacja func wejściowych lub zwrotu wartości w datastructures Pythona bez wyraźnej (NP.) Kopia może mieć niedeterministycznym konsekwencje.
inp Lista obiektów tf.Tensor .
Tout Lista lub krotka typów danych tensorflow lub pojedynczy typ danych tensorflow, jeśli istnieje tylko jeden, wskazując, która func zwraca.
name (Opcjonalnie) Nazwa operacji.

Pojedyncze lub lista tf.Tensor który func oblicza.