Esta página foi traduzida pela API Cloud Translation.
Switch to English

tf.numpy_function

Versão TensorFlow 1 Ver fonte no GitHub

Envolve uma função Python e a usa como uma operação do TensorFlow.

Usado nos cadernos

Usado nos tutoriais

Dada uma função Python, func envolva essa função como uma operação em uma função do TensorFlow. func deve receber matrizes numpy como seus argumentos e retornar matrizes numpy como suas saídas.

O exemplo a seguir cria um gráfico TensorFlow com np.sinh() como uma operação no gráfico:

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>

Comparação com tf.py_function : tf.py_function e tf.numpy_function são muito semelhantes, exceto que tf.numpy_function aceita matrizes numpy, e não tf.Tensor s. Se você quiser que a função contenha tf.Tensors e que qualquer operação do TensorFlow executada na função seja diferenciável, use tf.py_function .

  • O corpo da função (ie func ) não será serializado em um tf.SavedModel . Portanto, você não deve usar esta função se precisar serializar seu modelo e restaurá-lo em um ambiente diferente.

  • A operação deve ser executada no mesmo espaço de endereço que o programa Python que chama tf.numpy_function() . Se você estiver usando o TensorFlow distribuído, execute um tf.distribute.Server no mesmo processo que o programa que chama tf.numpy_function deverá fixar a operação criada em um dispositivo nesse servidor (por exemplo, usando with tf.device(): )

  • Como a função usa matrizes numpy, você não pode obter gradientes através de uma função numpy. Se você precisar de algo diferenciável, considere o uso de tf.py_function.

  • A função resultante é assumida com estado e nunca será otimizada.

func Uma função Python, que aceita objetos numpy.ndarray como argumentos e retorna uma lista de objetos numpy.ndarray (ou um único numpy.ndarray ). Essa função deve aceitar quantos argumentos houver tensores no inp e esses tipos de argumentos corresponderão tf.Tensor objetos tf.Tensor correspondentes no inp . Os retornos numpy.ndarray s devem corresponder ao número e aos tipos definidos Tout . Nota importante: Não é garantido que as cópias de entrada numpy.ndarray s de func sejam cópias. Em alguns casos, sua memória subjacente será compartilhada com os tensores TensorFlow correspondentes. No local modificação ou armazenar func entrada ou retornar valores em datastructures Python sem explícita (np.) Cópia pode ter consequências não-deterministas.
inp Uma lista de objetos tf.Tensor .
Tout Uma lista ou tupla de tipos de dados do fluxo de tensor ou um único tipo de dados de fluxo de tensor, se houver apenas um, indicando qual func retorna.
name (Opcional) Um nome para a operação.

Único ou lista de tf.Tensor que func calcula.