tensorflow :: opérations :: MatrixDiagV2

#include <array_ops.h>

Renvoie un tenseur diagonal groupé avec des valeurs diagonales groupées données.

Résumé

Renvoie un tenseur dont le contenu est en diagonal sous la forme de k[0] -th à k[1] -th diagonales d'une matrice, avec tout le reste rempli de padding . num_rows et num_cols spécifient la dimension de la matrice la plus interne de la sortie. Si les deux ne sont pas spécifiés, l'op suppose que la matrice la plus interne est carrée et déduit sa taille à partir de k et de la dimension la plus interne de la diagonal . Si un seul d'entre eux est spécifié, l'opération suppose que la valeur non spécifiée est la plus petite possible en fonction d'autres critères.

Soit la diagonal r dimensions [I, J, ..., L, M, N] . Le tenseur de sortie est de rang r+1 de forme [I, J, ..., L, M, num_rows, num_cols] lorsqu'une seule diagonale est donnée ( k est un entier ou k[0] == k[1] ) . Sinon, il a le rang r avec la forme [I, J, ..., L, num_rows, num_cols] .

La deuxième dimension la plus profonde de la diagonal a une double signification. Lorsque k est scalaire ou k[0] == k[1] , M fait partie de la taille du lot [I, J, ..., M] et le tenseur de sortie est:

output[i, j, ..., l, m, n]
  = diagonal[i, j, ..., l, n-max(d_upper, 0)] ; if n - m == d_upper
    output[i, j, ..., l, m, n]                ; otherwise

Sinon, M est traité comme le nombre de diagonales de la matrice dans le même lot ( M = k[1]-k[0]+1 ), et le tenseur de sortie est:

output[i, j, ..., l, m, n]
  = diagonal[i, j, ..., l, k[1]-d, n-max(d, 0)] ; if d_lower <= d <= d_upper
    input[i, j, ..., l, m, n]                   ; otherwise
d = n - m

Par example:

# The main diagonal.
diagonal = np.array([[1, 2, 3, 4],            # Input shape: (2, 4)
                     [5, 6, 7, 8]])
tf.matrix_diag(diagonal) ==> [[[1, 0, 0, 0],  # Output shape: (2, 4, 4)
                               [0, 2, 0, 0],
                               [0, 0, 3, 0],
                               [0, 0, 0, 4]],
                              [[5, 0, 0, 0],
                               [0, 6, 0, 0],
                               [0, 0, 7, 0],
                               [0, 0, 0, 8]]]

# A superdiagonal (per batch).
diagonal = np.array([[1, 2, 3],  # Input shape: (2, 3)
                     [4, 5, 6]])
tf.matrix_diag(diagonal, k = 1)
  ==> [[[0, 1, 0, 0],  # Output shape: (2, 4, 4)
        [0, 0, 2, 0],
        [0, 0, 0, 3],
        [0, 0, 0, 0]],
       [[0, 4, 0, 0],
        [0, 0, 5, 0],
        [0, 0, 0, 6],
        [0, 0, 0, 0]]]

# A band of diagonals.
diagonals = np.array([[[1, 2, 3],  # Input shape: (2, 2, 3)
                       [4, 5, 0]],
                      [[6, 7, 9],
                       [9, 1, 0]]])
tf.matrix_diag(diagonals, k = (-1, 0))
  ==> [[[1, 0, 0],  # Output shape: (2, 3, 3)
        [4, 2, 0],
        [0, 5, 3]],
       [[6, 0, 0],
        [9, 7, 0],
        [0, 1, 9]]]

# Rectangular matrix.
diagonal = np.array([1, 2])  # Input shape: (2)
tf.matrix_diag(diagonal, k = -1, num_rows = 3, num_cols = 4)
  ==> [[0, 0, 0, 0],  # Output shape: (3, 4)
       [1, 0, 0, 0],
       [0, 2, 0, 0]]

# Rectangular matrix with inferred num_cols and padding = 9.
tf.matrix_diag(diagonal, k = -1, num_rows = 3, padding = 9)
  ==> [[9, 9],  # Output shape: (3, 2)
       [1, 9],
       [9, 2]]

Arguments:

  • scope: un objet Scope
  • diagonale: Rang r , où r >= 1
  • k: décalage (s) diagonal (s). Une valeur positive signifie 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 basse et haute d'une bande matricielle. k[0] ne doit pas être supérieur à k[1] .
  • num_rows: le nombre de lignes de la matrice de sortie. S'il n'est pas fourni, l'op suppose que la matrice de sortie est une matrice carrée et déduit la taille de la matrice à partir de k et de la dimension la plus interne de la diagonal .
  • num_cols: le nombre de colonnes de la matrice de sortie. S'il n'est pas fourni, l'op suppose que la matrice de sortie est une matrice carrée et déduit la taille de la matrice à partir de k et de la dimension la plus interne de la diagonal .
  • padding_value: Le nombre avec lequel remplir la zone en dehors de la bande diagonale spécifiée. La valeur par défaut est 0.

Retour:

  • Output : a le rang r+1 quand k est un entier ou k[0] == k[1] , rang r sinon.

Constructeurs et destructeurs

MatrixDiagV2 (const :: tensorflow::Scope & scope, :: tensorflow::Input diagonal, :: tensorflow::Input k, :: tensorflow::Input num_rows, :: tensorflow::Input num_cols, :: tensorflow::Input padding_value)

Attributs publics

operation
output

Fonctions publiques

node () const
::tensorflow::Node *
operator::tensorflow::Input () const
operator::tensorflow::Output () const

Attributs publics

opération

Operation operation

production

::tensorflow::Output output

Fonctions publiques

MatrixDiagV2

 MatrixDiagV2(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input diagonal,
  ::tensorflow::Input k,
  ::tensorflow::Input num_rows,
  ::tensorflow::Input num_cols,
  ::tensorflow::Input padding_value
)

nœud

::tensorflow::Node * node() const 

operator :: tensorflow :: Input

 operator::tensorflow::Input() const 

operator :: tensorflow :: Output

 operator::tensorflow::Output() const