Spec-Zone.ru › TensorFlow 2.9

tf.numpy_function

Просмотреть исходный код на GitHub

Оборачивает функцию Python и использует её как операцию TensorFlow.

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.numpy_function

tf.numpy_function(
    func, inp, Tout, stateful=True, name=None
)

Принимая функцию Python func обернуть эту функцию как операцию в функции TensorFlow. func должна принимать массивы NumPy в качестве аргументов и возвращать массивы NumPy в качестве выходов.

Следующий пример создаёт граф TensorFlow с np.sinh() как операцией в графе:

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>

Сравнение с tf.py_function: tf.py_function и tf.numpy_function очень похожи, за исключением того, что tf.numpy_function принимает массивы NumPy, а не tf.Tensorы. Если вы хотите, чтобы функция содержала tf.Tensors, и чтобы все операции TensorFlow, выполненные в функции, были дифференцируемыми, используйте tf.py_function.

Примечание: Мы рекомендуем избегать использования tf.numpy_function вне прототипирования и экспериментов из-за следующих известных ограничений:
  • Вызов tf.numpy_function получит блокировку глобального интерпретатора Python (GIL), которая позволяет только одному потоку работать в любой момент времени. Это предотвратит эффективное распараллеливание и распределение выполнения программы. Поэтому мы не рекомендуем использовать tf.numpy_function вне прототипирования и экспериментов.

  • Тело функции (т.е. func) не будет сериализовано в tf.SavedModel. Поэтому не следует использовать эту функцию, если вам необходимо сериализовать вашу модель и восстановить её в другой среде.

  • Операция должна выполняться в том же адресном пространстве, что и программа Python, вызывающая tf.numpy_function(). Если вы используете распределённый TensorFlow, вам необходимо запустить tf.distribute.Server в том же процессе, что и программа, вызывающая tf.numpy_function, и привязать созданную операцию к устройству в этом сервере (например, с помощью with tf.device():).

  • В настоящее время tf.numpy_function несовместим с XLA. Вызов tf.numpy_function внутри tf.function(jit_comiple=True) вызовет ошибку.

  • Поскольку функция принимает массивы NumPy, вы не можете получить градиенты через numpy_function. Если вам нужна дифференцируемая функция, рассмотрите использование tf.py_function.

Аргументы
func Функция Python, которая принимает объекты numpy.ndarray в качестве аргументов и возвращает список объектов numpy.ndarray (или один объект numpy.ndarray). Эта функция должна принимать столько аргументов, сколько тензоров в inp, и типы этих аргументов будут соответствовать соответствующим объектам tf.Tensor в inp. Возвращаемые numpy.ndarray должны соответствовать числу и типам, определённым Tout. Важное примечание: входящие и исходящие numpy.ndarray функции func не гарантируются как копии. В некоторых случаях их базовое хранение будет совместно использоваться с соответствующими тензорами TensorFlow. Изменение на месте или сохранение func входных или возвращаемых значений в структурах данных Python без явного (np.) копирования может привести к непредсказуемым последствиям.
inp Список объектов tf.Tensor.
Tout Список или кортеж типов данных TensorFlow, или один тип данных TensorFlow, если их только один, указывающий, что возвращает func.
stateful (Булево.) Установка этого аргумента в False говорит исполнителю рассматривать функцию как бессостоятельную, что позволяет использовать определённые оптимизации. Функция является бессостоятельной, если для одного и того же входного значения она возвращает одно и то же выходное значение и не имеет побочных эффектов; её единственной целью является возвращаемое значение. Поведение состоятельной функции с аргументом stateful False не определено. В частности, следует проявлять осторожность при изменении входных аргументов, так как это является состоятельной операцией.
name (Необязательно) Имя операции.
Возвращаемые значения
Один или список объектов tf.Tensor, который func вычисляет.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/numpy_function

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API