MatrixDiagPartV3

classe finale publique MatrixDiagPartV3

Renvoie la partie diagonale groupée d'un tenseur groupé.

Renvoie un tenseur avec les `k[0]`-ième à `k[1]`-ième diagonales de l'`entrée` par lots.

Supposons que « input » ait des dimensions « r » « [I, J, ..., L, M, N] ». Soit `max_diag_len` la longueur maximale parmi toutes les diagonales à extraire, `max_diag_len = min(M + min(k[1], 0), N + min(-k[0], 0))` Soit `num_diags` soit le nombre de diagonales à extraire, `num_diags = k[1] - k[0] + 1`.

Si `num_diags == 1`, le tenseur de sortie est de rang `r - 1` de forme `[I, J, ..., L, max_diag_len]` et valeurs :

diagonal[i, j, ..., l, n]
   = input[i, j, ..., l, n+y, n+x] ; if 0 <= n+y < M and 0 <= n+x < N,
     padding_value                 ; otherwise.
 
où `y = max(-k [1], 0)`, `x = max(k[1], 0)`.

Sinon, le tenseur de sortie a le rang `r` avec les dimensions `[I, J, ..., L, num_diags, max_diag_len]` avec les valeurs :

diagonal[i, j, ..., l, m, n]
   = input[i, j, ..., l, n+y, n+x] ; if 0 <= n+y < M and 0 <= n+x < N,
     padding_value                 ; otherwise.
 
où `d = k[1] - m`, `y = max(-d, 0) - offset` et `x = max(d, 0) - offset`.

`offset` est nul sauf lorsque l'alignement de la diagonale est vers la droite.

offset = max_diag_len - diag_len(d) ; if (`align` in {RIGHT_LEFT, RIGHT_RIGHT}
                                            and `d >= 0`) or
                                          (`align` in {LEFT_RIGHT, RIGHT_RIGHT}
                                            and `d <= 0`)
          0                          ; otherwise
 
où `diag_len(d) = min(cols - max(d, 0), rows + min(d, 0))`.

L'entrée doit être au moins une matrice.

Par exemple :

input = np.array([[[1, 2, 3, 4],  # Input shape: (2, 3, 4)
                    [5, 6, 7, 8],
                    [9, 8, 7, 6]],
                   [[5, 4, 3, 2],
                    [1, 2, 3, 4],
                    [5, 6, 7, 8]]])
 
 # A main diagonal from each batch.
 tf.matrix_diag_part(input) ==> [[1, 6, 7],  # Output shape: (2, 3)
                                 [5, 2, 7]]
 
 # A superdiagonal from each batch.
 tf.matrix_diag_part(input, k = 1)
   ==> [[2, 7, 6],  # Output shape: (2, 3)
        [4, 3, 8]]
 
 # A band from each batch.
 tf.matrix_diag_part(input, k = (-1, 2))
   ==> [[[0, 3, 8],  # Output shape: (2, 4, 3)
         [2, 7, 6],
         [1, 6, 7],
         [5, 8, 0]],
        [[0, 3, 4],
         [4, 3, 8],
         [5, 2, 7],
         [1, 6, 0]]]
 
 # LEFT_RIGHT alignment.
 tf.matrix_diag_part(input, k = (-1, 2), align="LEFT_RIGHT")
   ==> [[[3, 8, 0],  # Output shape: (2, 4, 3)
         [2, 7, 6],
         [1, 6, 7],
         [0, 5, 8]],
        [[3, 4, 0],
         [4, 3, 8],
         [5, 2, 7],
         [0, 1, 6]]]
 
 # max_diag_len can be shorter than the main diagonal.
 tf.matrix_diag_part(input, k = (-2, -1))
   ==> [[[5, 8],
         [9, 0]],
        [[1, 6],
         [5, 0]]]
 
 # padding_value = 9
 tf.matrix_diag_part(input, k = (1, 3), padding_value = 9)
   ==> [[[9, 9, 4],  # Output shape: (2, 3, 3)
         [9, 3, 8],
         [2, 7, 6]],
        [[9, 9, 2],
         [9, 3, 4],
         [4, 3, 8]]]
 
 

Classes imbriquées

classe MatrixDiagPartV3.Options Attributs facultatifs pour MatrixDiagPartV3

Méthodes publiques

statique MatrixDiagPartV3.Options
aligner (alignement de chaîne)
Sortie <T>
comme Sortie ()
Renvoie le handle symbolique d'un tenseur.
statique <T> MatrixDiagPartV3 <T>
créer ( Portée de portée , entrée Opérande <T>, Opérande <Integer> k, Opérande <T> paddingValue, Options... options)
Méthode d'usine pour créer une classe encapsulant une nouvelle opération MatrixDiagPartV3.
Sortie <T>
diagonale ()
La ou les diagonales extraites.

Méthodes héritées

Méthodes publiques

public static MatrixDiagPartV3.Options aligner (alignement de chaînes)

Paramètres
aligner Certaines diagonales sont plus courtes que `max_diag_len` et doivent être complétées. `align` est une chaîne spécifiant comment les superdiagonales et les sous-diagonales doivent être alignées, respectivement. Il existe quatre alignements possibles : "RIGHT_LEFT" (par défaut), "LEFT_RIGHT", "LEFT_LEFT" et "RIGHT_RIGHT". "RIGHT_LEFT" aligne les superdiagonales vers la droite (remplit la ligne à gauche) et les sous-diagonales vers la gauche (remplit la ligne à droite). C'est le format d'emballage utilisé par LAPACK. cuSPARSE utilise "LEFT_RIGHT", qui est l'alignement opposé.

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 MatrixDiagPartV3 <T> créer (portée de la portée , entrée de l'opérande <T>, opérande <Integer> k, opérande <T> paddingValue, options... options)

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

Paramètres
portée portée actuelle
saisir Classez le tenseur `r` où `r >= 2`.
k Décalage(s) diagonal(s). Une valeur positive signifie une superdiagonale, 0 fait référence à la diagonale principale et une valeur négative signifie des sous-diagonales. « k » peut être un seul entier (pour une seule diagonale) ou une paire d'entiers spécifiant les extrémités inférieure et supérieure d'une bande matricielle. `k[0]` ne doit pas être supérieur à `k[1]`.
valeur de remplissage La valeur avec laquelle remplir la zone en dehors de la bande diagonale spécifiée. La valeur par défaut est 0.
choix porte des valeurs d'attributs facultatifs
Retour
  • une nouvelle instance de MatrixDiagPartV3

sortie publique <T> diagonale ()

La ou les diagonales extraites.