Mengembalikan bagian diagonal batch dari tensor batch.
Mengembalikan tensor dengan diagonal `k[0]`-th hingga `k[1]`-th dari `input` batch.
Asumsikan `input` memiliki dimensi `r` `[I, J, ..., L, M, N]`. Misalkan `max_diag_len` menjadi panjang maksimum di antara semua diagonal yang akan diekstraksi, `max_diag_len = min(M + min(k[1], 0), N + min(-k[0], 0))` Misalkan `num_diags` menjadi jumlah diagonal untuk mengekstrak, `num_diags = k[1] - k[0] + 1`.
Jika `num_diags == 1`, output tensor adalah peringkat` r - 1` dengan bentuk `[I, J, ..., L, max_diag_len]` dan nilai-nilai:
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.
mana `y = max (-k [1], 0)`, `x = maks(k[1], 0)`.Jika tidak, output tensor memiliki peringkat `r` dengan dimensi` [I, J, ..., L, num_diags, max_diag_len] `dengan nilai-nilai:
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.
mana` d = k [1] - m`, `y = maks(-d, 0) - offset`, dan `x = maks(d, 0) - offset`.`offset` adalah nol kecuali jika penjajaran diagonal ke kanan.
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
}
mana `diag_len (d) = min (cols - max (d, 0), baris + min (d, 0))`.Masukan setidaknya harus berupa matriks.
Sebagai contoh:
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]]]
Kelas Bersarang
kelas | MatrixDiagPartV3.Options | Atribut opsional untuk MatrixDiagPartV3 |
Metode Publik
statis MatrixDiagPartV3.Options | menyelaraskan (String menyelaraskan) |
Output <T> | asOutput () Mengembalikan pegangan simbolis tensor. |
statis <T> MatrixDiagPartV3 <T> | |
Output <T> | diagonal () Diagonal yang diekstraksi. |
Metode yang Diwarisi
Metode Publik
public static MatrixDiagPartV3.Options menyelaraskan (String menyelaraskan)
Parameter
meluruskan | Beberapa diagonal lebih pendek dari `max_diag_len` dan perlu diberi bantalan. `align` adalah string yang menentukan bagaimana superdiagonal dan subdiagonal harus disejajarkan, masing-masing. Ada empat kemungkinan penyelarasan: "RIGHT_LEFT" (default), "LEFT_RIGHT", "LEFT_LEFT", dan "RIGHT_RIGHT". "RIGHT_LEFT" menyejajarkan superdiagonal ke kanan (mengisi kiri baris) dan subdiagonal ke kiri (mengisi baris kanan). Ini adalah format kemasan yang digunakan LAPACK. cuSPARSE menggunakan "LEFT_RIGHT", yang merupakan kesejajaran yang berlawanan. |
---|
publik Keluaran <T> asOutput ()
Mengembalikan pegangan simbolis tensor.
Input ke operasi TensorFlow adalah output dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.
public static MatrixDiagPartV3 <T> membuat ( Lingkup lingkup, Operan <T> input, Operan <Integer> k, Operan <T> paddingValue, Options ... pilihan)
Metode pabrik untuk membuat kelas yang membungkus operasi MatrixDiagPartV3 baru.
Parameter
cakupan | lingkup saat ini |
---|---|
memasukkan | Peringkat tensor `r` di mana `r >= 2`. |
k | Offset diagonal. Nilai positif berarti superdiagonal, 0 mengacu pada diagonal utama, dan nilai negatif berarti subdiagonal. `k` dapat berupa bilangan bulat tunggal (untuk diagonal tunggal) atau sepasang bilangan bulat yang menentukan ujung rendah dan tinggi pita matriks. `k[0]` tidak boleh lebih besar dari `k[1]`. |
nilai padding | Nilai untuk mengisi area di luar pita diagonal yang ditentukan. Standarnya adalah 0. |
pilihan | membawa nilai atribut opsional |
Kembali
- contoh baru MatrixDiagPartV3