MatrixSetDiagV3

public final class MatrixSetDiagV3

Restituisce un tensore di matrice in batch con nuovi valori diagonali in batch.

Dati "input" e "diagonale", questa operazione restituisce un tensore con la stessa forma e valori di "input", eccetto per le diagonali specificate delle matrici più interne. Questi verranno sovrascritti dai valori in "diagonale".

"input" ha dimensioni "r + 1" "[I, J, ..., L, M, N]". Quando "k" è scalare o "k [0] == k [1]", "diagonale" ha dimensioni "r" "[I, J, ..., L, max_diag_len]". Altrimenti, ha dimensioni "r + 1" "[I, J, ..., L, num_diags, max_diag_len]". `num_diags` è il numero di diagonali,` num_diags = k [1] - k [0] + 1`. "max_diag_len" è la diagonale più lunga nell'intervallo "[k [0], k [1]]", `max_diag_len = min (M + min (k [1], 0), N + min (-k [0] , 0)) "

L'output è un tensore di rango "k + 1" con dimensioni "[I, J, ..., L, M, N]". Se `k` è scalare o` 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
 
Altrimenti,
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
 
dove` d = n - m`, `diag_index = k [1] - d` e` index_in_diag = n - 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))".

Ad esempio:

# 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(input, 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(input, 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([[[0, 9, 1],  # Diagonal shape: (2, 4, 3)
                        [6, 5, 8],
                        [1, 2, 3],
                        [4, 5, 0]],
                       [[0, 1, 2],
                        [5, 6, 4],
                        [6, 1, 2],
                        [3, 4, 0]]])
 tf.matrix_set_diag(input, diagonals, k = (-1, 2))
   ==> [[[1, 6, 9, 7],  # Output shape: (2, 3, 4)
         [4, 2, 5, 1],
         [7, 5, 3, 8]],
        [[6, 5, 1, 7],
         [3, 1, 6, 2],
         [7, 4, 2, 4]]]
 
 # LEFT_RIGHT alignment.
 diagonals = np.array([[[9, 1, 0],  # Diagonal shape: (2, 4, 3)
                        [6, 5, 8],
                        [1, 2, 3],
                        [0, 4, 5]],
                       [[1, 2, 0],
                        [5, 6, 4],
                        [6, 1, 2],
                        [0, 3, 4]]])
 tf.matrix_set_diag(input, diagonals, k = (-1, 2), align="LEFT_RIGHT")
   ==> [[[1, 6, 9, 7],  # Output shape: (2, 3, 4)
         [4, 2, 5, 1],
         [7, 5, 3, 8]],
        [[6, 5, 1, 7],
         [3, 1, 6, 2],
         [7, 4, 2, 4]]]
 
 

Classi annidate

classe MatrixSetDiagV3.Options Attributi facoltativi per MatrixSetDiagV3

Metodi pubblici

statico MatrixSetDiagV3.Options
align (String allinea)
Uscita <T>
asOutput ()
Restituisce la maniglia simbolica di un tensore.
statico <T> MatrixSetDiagV3 <T>
create ( ambito ambito, operando <T> input, operando <T> diagonale, operando <intero> k, opzioni ... opzioni)
Metodo Factory per creare una classe che avvolge una nuova operazione MatrixSetDiagV3.
Uscita <T>
output ()
Rango "r + 1", con "output.shape = input.shape".

Metodi ereditati

Metodi pubblici

public static MatrixSetDiagV3.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 MatrixSetDiagV3 <T> create ( ambito ambito, operando <T> input, operando <T> diagonale, operando <Integer> k, opzioni ...

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

Parametri
scopo ambito attuale
ingresso Rango "r + 1", dove "r> = 1".
diagonale Rango "r" quando "k" è un numero intero o "k [0] == k [1]". Altrimenti, ha rango "r + 1". "k> = 1".
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]".
opzioni trasporta valori di attributi opzionali
ritorna
  • una nuova istanza di MatrixSetDiagV3

output pubblico <T> output ()

Rango "r + 1", con "output.shape = input.shape".