Restituisce la parte diagonale in batch di un tensore in batch.
Restituisce un tensore con le diagonali da "k[0]" a "k[1]" dell'input 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 output è 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.
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.
"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
}
L'input deve essere almeno una matrice.
Per 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 nidificate
classe | MatrixDiagPartV3.Options | Attributi facoltativi per MatrixDiagPartV3 |
Costanti
Corda | OP_NAME | Il nome di questa operazione, come noto al motore principale di TensorFlow |
Metodi pubblici
MatrixDiagPartV3.Options statico | allineare (Allinea stringa) |
Uscita <T> | comeuscita () Restituisce l'handle simbolico del tensore. |
statico <T estende TType > MatrixDiagPartV3 <T> | |
Uscita <T> | diagonale () Le diagonali estratte. |
Metodi ereditati
Costanti
Stringa finale statica pubblica OP_NAME
Il nome di questa operazione, come noto al motore principale di TensorFlow
Metodi pubblici
pubblico statico MatrixDiagPartV3.Options allineare (allineamento stringa)
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 MatrixDiagPartV3 <T> create ( ambito ambito, operando <T> input, operando < TInt32 > k, operando <T> paddingValue, Opzioni... opzioni)
Metodo factory per creare una classe che racchiude una nuova operazione MatrixDiagPartV3.
Parametri
ambito | ambito attuale |
---|---|
ingresso | Tensore di rango `r` dove `r >= 2`. |
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]". |
valoreimbottitura | Il valore con cui riempire l'area esterna alla banda diagonale specificata. L'impostazione predefinita è 0. |
opzioni | trasporta valori di attributi opzionali |
Ritorni
- una nuova istanza di MatrixDiagPartV3