Cette page a été traduite par l'API Cloud Translation.
Switch to English

tf.numpy_function

Tensorflow 1 Version Voir la source sur GitHub

Enveloppements fonction python et l'utilise comme op tensorflow.

Utilisé dans les ordinateurs portables

Utilisé dans les tutoriels

Étant donné une fonction python func envelopper cette fonction comme une opération dans une fonction tensorflow. func doit prendre des tableaux numpy que ses arguments et renvoyer des tableaux numpy comme ses sorties.

L'exemple suivant crée un graphique tensorflow avec np.sinh() comme une opération dans le graphique:

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>

Comparaison à tf.py_function : tf.py_function et tf.numpy_function sont très similaires, sauf que tf.numpy_function prend des tableaux numpy, et non tf.Tensor s. Si vous voulez que la fonction de contenir tf.Tensors , et ont toutes les opérations de tensorflow exécutées dans la fonction différentiable, s'il vous plaît utiliser tf.py_function .

  • Le corps de la fonction (c. -à- func ) ne sera pas publié en feuilleton dans un tf.SavedModel . Par conséquent, vous ne devriez pas utiliser cette fonction si vous avez besoin de sérialisation votre modèle et restaurer dans un environnement différent.

  • L'opération doit fonctionner dans le même espace d'adressage que le programme Python qui appelle tf.numpy_function() . Si vous utilisez une périphérie tensorflow, vous devez exécuter un tf.distribute.Server dans le même processus que le programme qui appelle tf.numpy_function vous devez épingler l'opération créée à un dispositif dans ce serveur (par exemple , en utilisant with tf.device(): ).

  • Étant donné que la fonction prend des tableaux numpy, vous ne pouvez pas prendre des gradients par un numpy_function. Si vous avez besoin quelque chose qui est différentiables, s'il vous plaît envisager d'utiliser tf.py_function.

  • La fonction résultante est supposée stateful et ne sera jamais optimisé.

func Un python fonction, qui accepte numpy.ndarray objets comme arguments et renvoie une liste de numpy.ndarray objets (ou un seul numpy.ndarray ). Cette fonction doit accepter autant d'arguments comme il y a des tenseurs dans inp , et ces types d'arguments correspondra à la correspondante tf.Tensor objets dans inp . Les rendements numpy.ndarray s doit correspondre au nombre et types définis Tout . Remarque importante: entrée et sortie numpy.ndarray s de func ne sont pas garantis copies. Dans certains cas, leur mémoire sous-jacente sera partagée avec les tenseurs tensorflow correspondants. En place la modification ou le stockage func valeurs d'entrée ou le retour en datastructures python sans explicite (np.) Copie peut avoir des conséquences non déterministe.
inp Une liste des tf.Tensor objets.
Tout Une liste ou tuple des types de données tensorflow ou un seul type de données tensorflow s'il n'y a qu'un seul, ce qui indique que func rendement.
name (Facultatif) Un nom pour l'opération.

Unique ou une liste de tf.Tensor qui func calcule.