Mengembalikan tensor diagonal kumpulan dengan nilai diagonal kumpulan tertentu.
Mengembalikan tensor dengan konten dalam `diagonal` sebagai diagonal ke-`k[0]` hingga `k[1]`-diagonal matriks, dengan semua yang lain diisi dengan `padding`. `num_rows` dan `num_cols` menentukan dimensi matriks keluaran yang paling dalam. Jika keduanya tidak ditentukan, operasi mengasumsikan matriks terdalam berbentuk persegi dan menyimpulkan ukurannya dari `k` dan dimensi terdalam dari `diagonal`. Jika hanya salah satu saja yang ditentukan, operasi mengasumsikan nilai yang tidak ditentukan adalah yang terkecil berdasarkan kriteria lainnya.
Misalkan `diagonal` memiliki dimensi `r` `[I, J, ..., L, M, N]`. Tensor keluaran memiliki peringkat `r+1` dengan bentuk `[I, J, ..., L, M, num_rows, num_cols]` ketika hanya satu diagonal yang diberikan (`k` adalah bilangan bulat atau `k[0] == k[1]`). Jika tidak, ia memiliki peringkat `r` dengan bentuk `[I, J, ..., L, num_rows, num_cols]`.
Dimensi terdalam kedua dari `diagonal` memiliki makna ganda. Jika `k` adalah skalar atau `k[0] == k[1]`, `M` adalah bagian dari ukuran batch [I, J, ..., M], dan tensor keluarannya adalah:
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` adalah nol kecuali jika perataan diagonalnya 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
}
Misalnya:
# 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]]
Kelas Bersarang
kelas | MatrixDiagV3.Opsi | Atribut opsional untuk MatrixDiagV3 |
Konstanta
Rangkaian | OP_NAME | Nama operasi ini dikenal dengan mesin inti TensorFlow |
Metode Publik
MatrixDiagV3.Options statis | menyelaraskan (String menyelaraskan) |
Keluaran <T> | sebagai Keluaran () Mengembalikan pegangan simbolik tensor. |
statis <T memperluas TType > MatrixDiagV3 <T> | |
Keluaran <T> | keluaran () Memiliki peringkat `r+1` ketika `k` adalah bilangan bulat atau `k[0] == k[1]`, peringkat `r` sebaliknya. |
Metode Warisan
Konstanta
String akhir statis publik OP_NAME
Nama operasi ini dikenal dengan mesin inti TensorFlow
Metode Publik
Penyelarasan opsi MatrixDiagV3.Options publik (String align)
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. Ada empat kemungkinan perataan: "RIGHT_LEFT" (default), "LEFT_RIGHT", "LEFT_LEFT", dan "RIGHT_RIGHT". "RIGHT_LEFT" menyelaraskan superdiagonal ke kanan (mengisi baris ke kiri) dan subdiagonal ke kiri (mengisi baris ke kanan). Ini adalah format pengepakan yang digunakan LAPACK. cuSPARSE menggunakan "LEFT_RIGHT", yang merupakan kebalikannya. |
---|
Keluaran publik <T> sebagai Keluaran ()
Mengembalikan pegangan simbolik tensor.
Masukan ke operasi TensorFlow adalah keluaran dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.
public static MatrixDiagV3 <T> buat ( Lingkup cakupan , Operan <T> diagonal, Operan < TInt32 > k, Operan < TInt32 > numRows, Operan < TInt32 > numCols, Operan <T> paddingValue, Opsi... opsi)
Metode pabrik untuk membuat kelas yang membungkus operasi MatrixDiagV3 baru.
Parameter
cakupan | ruang lingkup saat ini |
---|---|
diagonal | Peringkat `r`, di mana `r >= 1` |
k | Offset diagonal. Nilai positif berarti superdiagonal, 0 mengacu pada diagonal utama, dan nilai negatif berarti subdiagonal. `k` dapat berupa bilangan bulat tunggal (untuk satu diagonal) atau sepasang bilangan bulat yang menentukan ujung rendah dan tinggi dari pita matriks. `k[0]` tidak boleh lebih besar dari `k[1]`. |
nomor baris | Jumlah baris matriks keluaran. Jika tidak tersedia, operasi mengasumsikan matriks keluaran adalah matriks persegi dan menyimpulkan ukuran matriks dari k dan dimensi terdalam dari `diagonal`. |
nomorKolom | Jumlah kolom matriks keluaran. Jika tidak tersedia, operasi mengasumsikan matriks keluaran adalah matriks persegi dan menyimpulkan ukuran matriks dari k dan dimensi terdalam dari `diagonal`. |
paddingValue | Nomor untuk mengisi area di luar pita diagonal yang ditentukan. Standarnya adalah 0. |
pilihan | membawa nilai atribut opsional |
Kembali
- contoh baru dari MatrixDiagV3
Keluaran publik <T> keluaran ()
Memiliki peringkat `r+1` ketika `k` adalah bilangan bulat atau `k[0] == k[1]`, peringkat `r` sebaliknya.