Einsum

cours final public Einsum

Contraction tensorielle selon la convention de sommation d'Einstein.

Implémente une contraction et une réduction généralisées du Tensor. Chaque tenseur d'entrée doit avoir un indice d'entrée correspondant apparaissant dans le côté gauche de l'équation, séparé par des virgules. Le côté droit de l’équation est constitué de l’indice de sortie. Les indices d'entrée et l'indice de sortie doivent être constitués de zéro ou plusieurs étiquettes d'axes nommés et d'au plus une points de suspension (`...`).

Les étiquettes des axes nommés peuvent être n'importe quel caractère autre que ceux ayant une signification particulière, à savoir `,.->`. Le comportement de cet Op est indéfini s'il reçoit une équation mal formatée ; puisque la validation est effectuée au moment de la création du graphique, nous omettons les contrôles de validation du format au moment de l'exécution.

Remarque : Cette opération n'est pas destinée à être appelée par l'utilisateur ; à la place, les utilisateurs doivent appeler directement tf.einsum . Il s'agit d'une opération cachée utilisée par tf.einsum .

Les opérations sont appliquées aux entrées selon les règles suivantes :

(a) Diagonales généralisées : pour les dimensions d'entrée correspondant aux étiquettes d'axe apparaissant plus d'une fois dans le même indice d'entrée, nous prenons la diagonale généralisée (dimension `k`). Par exemple, dans l'équation `iii->i` avec la forme d'entrée `[3, 3, 3]`, la diagonale généralisée serait composée de `3` éléments aux indices `(0, 0, 0)`, `(1 , 1, 1)` et `(2, 2, 2)` pour créer un tenseur de forme `[3]`.

(b) Réduction : les axes correspondant aux étiquettes apparaissant uniquement dans un indice d'entrée mais pas dans l'indice de sortie sont additionnés avant la contraction du Tensor. Par exemple, dans l'équation « ab,bc->b », les étiquettes d'axe « a » et « c » sont les étiquettes d'axe de réduction.

(c) Dimensions du lot : les axes correspondant aux étiquettes apparaissant dans chacun des indices d'entrée ainsi que dans l'indice de sortie constituent les dimensions du lot dans la contraction Tensor. Les étiquettes d'axes sans nom correspondant aux points de suspension (`...`) correspondent également aux dimensions du lot. Par exemple, pour l'équation désignant la multiplication matricielle par lots, « bij,bjk->bik », l'étiquette de l'axe « b » correspond à une dimension de lot.

(d) Contraction : En cas d'einsum binaire, les axes correspondant aux étiquettes apparaissant dans deux entrées différentes (et non dans la sortie) sont contractés les uns contre les autres. En considérant à nouveau l'équation de multiplication de la matrice par lots (`bij,bjk->bik`), l'étiquette de l'axe contracté est `j`.

(e) Développer la diagonale : si les indices de sortie contiennent des étiquettes d'axe répétées (explicites), l'opération inverse de (a) est appliquée. Par exemple, dans l'équation « i->iii » et la forme d'entrée « [3] », les sorties de la forme « [3, 3, 3] » sont toutes des zéros, à l'exception de la diagonale (généralisée) qui est renseignée avec valeurs de l’entrée. Remarque : Cette opération n'est pas prise en charge par `np.einsum` ou tf.einsum ; il est prévu pour permettre de calculer le gradient symbolique de tf.einsum .

Les indices de sortie doivent contenir uniquement des étiquettes apparaissant dans au moins un des indices d'entrée. De plus, toutes les dimensions mappées sur la même étiquette d’axe doivent être égales.

N'importe lequel des indices d'entrée et de sortie peut contenir au plus une seule points de suspension (`...`). Ces points de suspension sont mappés à des dimensions ne correspondant à aucune étiquette d'axe nommé. Si deux entrées contiennent des points de suspension, elles sont alors diffusées conformément aux [règles] de diffusion NumPy standard (http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html).

Les dimensions diffusées sont placées à l’emplacement correspondant des points de suspension dans l’indice de sortie. Si les dimensions diffusées ne sont pas vides et que les indices de sortie ne contiennent pas de points de suspension, une erreur InvalidArgument est générée.

Méthodes publiques

Sortie <T>
comme Sortie ()
Renvoie le handle symbolique d'un tenseur.
statique <T> Einsum <T>
créer (portée de portée , entrées Iterable< Operand <T>>, équation de chaîne)
Méthode d'usine pour créer une classe encapsulant une nouvelle opération Einsum.
Sortie <T>
sortir ()
Tenseur de sortie avec une forme dépendant de « l'équation ».

Méthodes héritées

Méthodes publiques

sortie publique <T> asOutput ()

Renvoie le handle symbolique d'un tenseur.

Les entrées des opérations TensorFlow sont les sorties d'une autre opération TensorFlow. Cette méthode est utilisée pour obtenir un handle symbolique qui représente le calcul de l’entrée.

public static Einsum <T> create (portée de portée , entrées Iterable< Operand <T>>, équation de chaîne)

Méthode d'usine pour créer une classe encapsulant une nouvelle opération Einsum.

Paramètres
portée portée actuelle
contributions Liste de 1 ou 2 Tenseurs.
équation Chaîne décrivant l’opération de sommation Einstein ; au format np.einsum.
Retour
  • une nouvelle instance d'Einsum

sortie publique <T> sortie ()

Tenseur de sortie avec une forme dépendant de « l'équation ».