Restituisce un tensore diagonale raggruppato con determinati valori diagonali raggruppati.
Restituisce un tensore con il contenuto in "diagonale" come diagonali da "k[0]" a "k[1]"-esima di una matrice, con tutto il resto riempito con "padding". "num_rows" e "num_cols" specificano la dimensione della matrice più interna dell'output. Se entrambi non sono specificati, l'operazione presuppone che la matrice più interna sia quadrata e ne deduce la dimensione da "k" e dalla dimensione più interna di "diagonale". Se ne viene specificato solo uno, l'operazione presuppone che il valore non specificato sia il più piccolo possibile in base ad altri criteri.
Sia "diagonale" avere dimensioni "r" "[I, J, ..., L, M, N]". Il tensore di output ha rango `r+1` con forma `[I, J, ..., L, M, num_rows, num_cols]` quando viene fornita una sola diagonale (`k` è un numero intero o `k[0] == k[1]`). Altrimenti, ha rango "r" con forma "[I, J, ..., L, num_rows, num_cols]".
La seconda dimensione più interna di "diagonale" ha un doppio significato. Quando `k` è scalare o `k[0] == k[1]`, `M` fa parte della dimensione del batch [I, J, ..., M] e il tensore di output è:
output[i, j, ..., l, m, n]
= diagonal[i, j, ..., l, n-max(d_upper, 0)] ; if n - m == d_upper
padding_value ; otherwise
output[i, j, ..., l, m, n]
= diagonal[i, j, ..., l, diag_index, index_in_diag] ; if k[0] <= d <= k[1]
padding_value ; otherwise
"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
}
Per esempio:
# 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 tridiagonal band (per batch).
diagonals = np.array([[[0, 8, 9], # Input shape: (2, 2, 3)
[1, 2, 3],
[4, 5, 0]],
[[0, 2, 3],
[6, 7, 9],
[9, 1, 0]]])
tf.matrix_diag(diagonals, k = (-1, 1))
==> [[[1, 8, 0], # Output shape: (2, 3, 3)
[4, 2, 9],
[0, 5, 3]],
[[6, 2, 0],
[9, 7, 3],
[0, 1, 9]]]
# LEFT_RIGHT alignment.
diagonals = np.array([[[8, 9, 0], # Input shape: (2, 2, 3)
[1, 2, 3],
[0, 4, 5]],
[[2, 3, 0],
[6, 7, 9],
[0, 9, 1]]])
tf.matrix_diag(diagonals, k = (-1, 1), align="LEFT_RIGHT")
==> [[[1, 8, 0], # Output shape: (2, 3, 3)
[4, 2, 9],
[0, 5, 3]],
[[6, 2, 0],
[9, 7, 3],
[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_value = 9.
tf.matrix_diag(diagonal, k = -1, num_rows = 3, padding_value = 9)
==> [[9, 9], # Output shape: (3, 2)
[1, 9],
[9, 2]]
Classi nidificate
classe | MatrixDiagV3.Opzioni | Attributi opzionali per MatrixDiagV3 |
Costanti
Corda | OP_NAME | Il nome di questa operazione, come noto al motore principale di TensorFlow |
Metodi pubblici
MatrixDiagV3.Options statico | allineare (Allinea stringa) |
Uscita <T> | comeuscita () Restituisce l'handle simbolico del tensore. |
statico <T estende TType > MatrixDiagV3 <T> | |
Uscita <T> | produzione () Ha rango `r+1` quando `k` è un numero intero o `k[0] == k[1]`, rango `r` altrimenti. |
Metodi ereditati
Costanti
Stringa finale statica pubblica OP_NAME
Il nome di questa operazione, come noto al motore principale di TensorFlow
Metodi pubblici
allineamento pubblico statico MatrixDiagV3.Options (allineamento di stringhe)
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 subdiagonali. Sono disponibili quattro allineamenti possibili: "RIGHT_LEFT" (predefinito), "LEFT_RIGHT", "LEFT_LEFT" e "RIGHT_RIGHT". "RIGHT_LEFT" allinea le superdiagonali a destra (riempi la riga a sinistra) e le diagonali secondarie a sinistra (riempi la riga a destra). È il formato di imballaggio utilizzato da LAPACK. cuSPARSE utilizza "LEFT_RIGHT", che è l'allineamento opposto. |
---|
Uscita pubblica <T> asOutput ()
Restituisce l'handle simbolico del 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 MatrixDiagV3 <T> create ( scope scope, Operando <T> diagonal, Operando < TInt32 > k, Operando < TInt32 > numRows, Operando < TInt32 > numCols, Operando <T> paddingValue, Opzioni... opzioni)
Metodo factory per creare una classe che racchiude una nuova operazione MatrixDiagV3.
Parametri
ambito | ambito attuale |
---|---|
diagonale | Rango `r`, dove `r >= 1` |
k | Offset diagonale(i). Il valore positivo significa superdiagonale, 0 si riferisce alla diagonale principale e il valore negativo significa subdiagonali. "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]". |
numRighe | Il numero di righe della matrice di output. Se non viene fornita, l'operazione presuppone che la matrice di output sia una matrice quadrata e deduce la dimensione della matrice da k e la dimensione più interna di "diagonale". |
numCol | Il numero di colonne della matrice di output. Se non viene fornita, l'operazione presuppone che la matrice di output sia una matrice quadrata e deduce la dimensione della matrice da k e la dimensione più interna di "diagonale". |
valoreimbottitura | Il numero con cui riempire l'area all'esterno della banda diagonale specificata. L'impostazione predefinita è 0. |
opzioni | trasporta valori di attributi opzionali |
Ritorni
- una nuova istanza di MatrixDiagV3
Uscita pubblica <T> uscita ()
Ha rango `r+1` quando `k` è un numero intero o `k[0] == k[1]`, rango `r` altrimenti.