MatrixSetDiag

MatrixSetDiag kelas akhir publik

Mengembalikan tensor matriks batch dengan nilai diagonal batch baru.

Mengingat `input` dan `diagonal`, operasi ini mengembalikan tensor dengan bentuk dan nilai yang sama dengan `input`, kecuali untuk diagonal yang ditentukan dari matriks terdalam. Ini akan ditimpa oleh nilai dalam `diagonal`.

`input` memiliki dimensi `r+1` `[I, J, ..., L, M, N]`. Jika `k` adalah skalar atau `k[0] == k[1]`, `diagonal` memiliki dimensi `r` `[I, J, ..., L, max_diag_len]`. Jika tidak, ia memiliki dimensi `r+1` `[I, J, ..., L, num_diags, max_diag_len]`. `num_diags` adalah jumlah diagonal, `num_diags = k[1] - k[0] + 1`. `max_diag_len` adalah diagonal terpanjang dalam rentang `[k[0], k[1]]`, `max_diag_len = min(M + min(k[1], 0), N + min(-k[0] , 0))`

Outputnya berupa tensor rank `k+1` dengan dimensi `[I, J, ..., L, M, N]`. Jika `k` adalah skalar atau `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
 
Jika tidak,
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
 
dengan `d = n - m`, `diag_index = k[1] - d`, dan ` indeks_in_diag = n - maks(d, 0) + offset`.

`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
 }
di mana `diag_len(d) = min(cols - max(d, 0), baris + min(d, 0))`.

Misalnya:

# 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]]]
 
 

Kelas Bersarang

kelas MatrixSetDiag.Opsi Atribut opsional untuk MatrixSetDiag

Konstanta

Rangkaian OP_NAME Nama operasi ini dikenal dengan mesin inti TensorFlow

Metode Publik

MatrixSetDiag.Options statis
menyelaraskan (String menyelaraskan)
Keluaran <T>
sebagai Keluaran ()
Mengembalikan pegangan simbolis tensor.
statis <T memperluas TType > MatrixSetDiag <T>
buat ( Lingkup lingkup, masukan Operan <T>, Operan <T> diagonal, Operan < TInt32 > k, Opsi... opsi)
Metode pabrik untuk membuat kelas yang membungkus operasi MatrixSetDiag baru.
Keluaran <T>
keluaran ()
Beri peringkat `r+1`, dengan `output.shape = input.shape`.

Metode Warisan

Konstanta

String akhir statis publik OP_NAME

Nama operasi ini dikenal dengan mesin inti TensorFlow

Nilai Konstan: "MatrixSetDiagV3"

Metode Publik

Penyelarasan MatrixSetDiag.Options statis publik (Penyelarasan string)

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 simbolis tensor.

Masukan ke operasi TensorFlow adalah keluaran dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.

public static MatrixSetDiag <T> buat ( Lingkup lingkup, masukan Operan <T>, Operan <T> diagonal, Operan < TInt32 > k, Opsi... opsi)

Metode pabrik untuk membuat kelas yang membungkus operasi MatrixSetDiag baru.

Parameter
cakupan ruang lingkup saat ini
memasukkan Peringkat `r+1`, dengan `r >= 1`.
diagonal Beri peringkat `r` ketika `k` adalah bilangan bulat atau `k[0] == k[1]`. Jika tidak, ia memiliki peringkat `r+1`. `k >= 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]`.
pilihan membawa nilai atribut opsional
Kembali
  • contoh baru dari MatrixSetDiag

Keluaran publik <T> keluaran ()

Beri peringkat `r+1`, dengan `output.shape = input.shape`.