MatrixDiagPartV3

public final class MatrixDiagPartV3

Restituisce la parte diagonale in batch di un tensore in batch.

Restituisce un tensore con le diagonali da `k [0]` -esima a `k [1]` -esima dell'input` in batch.

Supponiamo che "input" abbia dimensioni "r" "[I, J, ..., L, M, N]". Sia `max_diag_len` la lunghezza massima tra tutte le diagonali da estrarre,` max_diag_len = min (M + min (k [1], 0), N + min (-k [0], 0)) `Sia` num_diags` essere il numero di diagonali da estrarre, `num_diags = k [1] - k [0] + 1`.

Se "num_diags == 1", il tensore di uscita è di rango "r - 1" con forma "[I, J, ..., L, max_diag_len]" e valori:

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.
 
dove "y = max (-k [1 ], 0) "," x = max (k [1], 0) ".

Altrimenti, il tensore di output ha rango `r` con dimensioni` [I, J, ..., L, num_diags, max_diag_len] `con valori:

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.
 
dove` d = k [1] - m`, `y = max ( -d, 0) - offset` e `x = max (d, 0) - offset`.

"offset" è zero tranne quando l'allineamento della diagonale è a destra.

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
 }
dove "diag_len (d) = min (cols - max (d, 0), righe + min (d, 0))".

L'input deve essere almeno una matrice.

Ad esempio:

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]]]
 
 

Classi annidate

classe MatrixDiagPartV3.Options Attributi facoltativi per MatrixDiagPartV3

Metodi pubblici

statico MatrixDiagPartV3.Options
align (String allinea)
Uscita <T>
asOutput ()
Restituisce la maniglia simbolica di un tensore.
statico <T> MatrixDiagPartV3 <T>
create ( ambito ambito, operando <T> input, operando <Integer> k, operando <T> paddingValue, opzioni ... opzioni)
Metodo Factory per creare una classe che esegue il wrapping di una nuova operazione MatrixDiagPartV3.
Uscita <T>
diagonale ()
Le diagonali estratte.

Metodi ereditati

Metodi pubblici

public static MatrixDiagPartV3.Options align (String align)

Parametri
allineare Alcune diagonali sono più corte di "max_diag_len" e devono essere riempite. `align` è una stringa che specifica come devono essere allineate rispettivamente le superdiagonali e le sottodiagonali. Sono disponibili quattro allineamenti possibili: "RIGHT_LEFT" (predefinito), "LEFT_RIGHT", "LEFT_LEFT" e "RIGHT_RIGHT". "RIGHT_LEFT" allinea le superdiagonali a destra (a sinistra della riga) e le sottodiagonali a sinistra (a destra della riga). È il formato di imballaggio utilizzato da LAPACK. cuSPARSE utilizza "LEFT_RIGHT", che è l'allineamento opposto.

output pubblico <T> asOutput ()

Restituisce la maniglia simbolica di un tensore.

Gli input per le operazioni TensorFlow sono output di un'altra operazione TensorFlow. Questo metodo viene utilizzato per ottenere un handle simbolico che rappresenta il calcolo dell'input.

public static MatrixDiagPartV3 <T> create ( Scope scope, Operand <T> input, Operand <Integer> k, Operand <T> paddingValue, Options ... options)

Metodo Factory per creare una classe che avvolge una nuova operazione MatrixDiagPartV3.

Parametri
scopo ambito attuale
ingresso Rango tensore "r" dove "r> = 2".
K Offset diagonale. Un valore positivo significa superdiagonale, 0 si riferisce alla diagonale principale e un valore negativo significa sottodiagonale. "k" può essere un singolo numero intero (per una singola diagonale) o una coppia di numeri interi che specificano le estremità inferiore e superiore di una banda di matrice. "k [0]" non deve essere maggiore di "k [1]".
paddingValue Il valore con cui riempire l'area al di fuori della banda diagonale specificata. L'impostazione predefinita è 0.
opzioni trasporta valori di attributi opzionali
ritorna
  • una nuova istanza di MatrixDiagPartV3

public Output <T> diagonale ()

Le diagonali estratte.