MatrixSetDiagV2

classe finale publique MatrixSetDiagV2

Renvoie un tenseur matriciel par lots avec de nouvelles valeurs diagonales par lots.

Étant donné « input » et « diagonale », cette opération renvoie un tenseur avec la même forme et les mêmes valeurs que « input », à l'exception des diagonales spécifiées des matrices les plus internes. Celles-ci seront écrasées par les valeurs en « diagonale ».

`input` a les dimensions `r+1` `[I, J, ..., L, M, N]`. Lorsque `k` est scalaire ou `k[0] == k[1]`, `diagonale` a `r` dimensions `[I, J, ..., L, max_diag_len]`. Sinon, il a des dimensions `r+1` `[I, J, ..., L, num_diags, max_diag_len]`. `num_diags` est le nombre de diagonales, `num_diags = k[1] - k[0] + 1`. `max_diag_len` est la diagonale la plus longue de la plage `[k[0], k[1]]`, `max_diag_len = min(M + min(k[1], 0), N + min(-k[0] , 0))`

Le résultat est un tenseur de rang « k+1 » de dimensions « [I, J, ..., L, M, N] ». Si `k` est scalaire ou `k[0] == k[1]` :

output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, n-max(k[1], 0)] ; if n - m == k[1]
     input[i, j, ..., l, m, n]              ; otherwise
 
Sinon,
output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, diag_index, index_in_diag] ; if k[0] <= d <= k[1]
     input[i, j, ..., l, m, n]                         ; otherwise
 
où `d = n - m`, `diag_index = k[1] - d` et ` index_in_diag = n - max(d, 0)`.

Par exemple :

# The main diagonal.
 input = np.array([[[7, 7, 7, 7],              # Input shape: (2, 3, 4)
                    [7, 7, 7, 7],
                    [7, 7, 7, 7]],
                   [[7, 7, 7, 7],
                    [7, 7, 7, 7],
                    [7, 7, 7, 7]]])
 diagonal = np.array([[1, 2, 3],               # Diagonal shape: (2, 3)
                      [4, 5, 6]])
 tf.matrix_set_diag(diagonal) ==> [[[1, 7, 7, 7],  # Output shape: (2, 3, 4)
                                    [7, 2, 7, 7],
                                    [7, 7, 3, 7]],
                                   [[4, 7, 7, 7],
                                    [7, 5, 7, 7],
                                    [7, 7, 6, 7]]]
 
 # A superdiagonal (per batch).
 tf.matrix_set_diag(diagonal, k = 1)
   ==> [[[7, 1, 7, 7],  # Output shape: (2, 3, 4)
         [7, 7, 2, 7],
         [7, 7, 7, 3]],
        [[7, 4, 7, 7],
         [7, 7, 5, 7],
         [7, 7, 7, 6]]]
 
 # A band of diagonals.
 diagonals = np.array([[[1, 2, 3],  # Diagonal shape: (2, 2, 3)
                        [4, 5, 0]],
                       [[6, 1, 2],
                        [3, 4, 0]]])
 tf.matrix_set_diag(diagonals, k = (-1, 0))
   ==> [[[1, 7, 7, 7],  # Output shape: (2, 3, 4)
         [4, 2, 7, 7],
         [0, 5, 3, 7]],
        [[6, 7, 7, 7],
         [3, 1, 7, 7],
         [7, 4, 2, 7]]]
 
 

Méthodes publiques

Sortie <T>
comme Sortie ()
Renvoie le handle symbolique d'un tenseur.
statique <T> MatrixSetDiagV2 <T>
créer ( Portée de portée , Opérande <T> entrée, Opérande <T> diagonale, Opérande <Integer> k)
Méthode d'usine pour créer une classe encapsulant une nouvelle opération MatrixSetDiagV2.
Sortie <T>
sortir ()
Classez « r+1 », avec « output.shape = input.shape ».

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 MatrixSetDiagV2 <T> créer ( Portée , Opérande <T> entrée, Opérande <T> diagonale, Opérande <Integer> k)

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

Paramètres
portée portée actuelle
saisir Classez « r+1 », où « r >= 1 ».
diagonale Classez « r » lorsque « k » est un entier ou « k[0] == k[1] ». Sinon, il a le rang « r+1 ». `k >= 1`.
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]`.
Retour
  • une nouvelle instance de MatrixSetDiagV2

sortie publique <T> sortie ()

Classez « r+1 », avec « output.shape = input.shape ».