Ma TrậnDiagPartV3

lớp cuối cùng công khai MatrixDiagPartV3

Trả về phần đường chéo theo đợt của một tenxơ theo đợt.

Trả về một tensor có đường chéo thứ `k[0]`-th đến `k[1]`-th của `đầu vào` theo lô.

Giả sử `input` có kích thước `r` `[I, J, ..., L, M, N]`. Đặt `max_diag_len` là độ dài tối đa trong số tất cả các đường chéo được trích xuất, `max_diag_len = min(M + min(k[1], 0), N + min(-k[0], 0))` Đặt `num_diags` là số đường chéo cần trích xuất, `num_diags = k[1] - k[0] + 1`.

Nếu `num_diags == 1`, tensor đầu ra có hạng `r - 1` với hình dạng `[I, J, ..., L, max_diag_len]` và các giá trị:

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.
 
trong đó `y = max(-k [1], 0)`, `x = max(k[1], 0)`.

Ngược lại, tensor đầu ra có hạng `r` với các kích thước `[I, J, ..., L, num_diags, max_diag_len]` với các giá trị:

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.
 
trong đó `d = k[1] - m`, `y = max(-d, 0) - offset` và `x = max(d, 0) - offset`.

`offset` bằng 0 ngoại trừ khi căn chỉnh của đường chéo ở bên phải.

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
 }
trong đó `diag_len(d) = min(cols - max(d, 0), row + min(d, 0))`.

Đầu vào ít nhất phải là ma trận.

Ví dụ:

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

Các lớp lồng nhau

lớp học MatrixDiagPartV3.Options Thuộc tính tùy chọn cho MatrixDiagPartV3

Phương pháp công khai

MatrixDiagPartV3.Options tĩnh
căn chỉnh (Căn chỉnh chuỗi)
Đầu ra <T>
asOutput ()
Trả về phần điều khiển tượng trưng của một tenxơ.
tĩnh <T> MatrixDiagPartV3 <T>
tạo (Phạm vi phạm vi, đầu vào Toán hạng <T>, Toán hạng <Số nguyên> k, Toán hạng <T> giá trị đệm, Tùy chọn... tùy chọn)
Phương thức gốc để tạo một lớp bao bọc một thao tác MatrixDiagPartV3 mới.
Đầu ra <T>
đường chéo ()
(Các) đường chéo được trích xuất.

Phương pháp kế thừa

Phương pháp công khai

public static MatrixDiagPartV3.Options căn chỉnh (Căn chỉnh chuỗi)

Thông số
căn chỉnh Một số đường chéo ngắn hơn `max_diag_len` và cần được đệm. `align` là một chuỗi chỉ định cách căn chỉnh các đường siêu chéo và đường chéo phụ tương ứng. Có bốn cách sắp xếp có thể có: "RIGHT_LEFT" (mặc định), "LEFT_RIGHT", "LEFT_LEFT" và "RIGHT_RIGHT". "RIGHT_LEFT" căn chỉnh các đường chéo siêu sang phải ( Đệm bên trái hàng) và các đường chéo phụ về bên trái ( Đệm bên phải hàng). Đây là định dạng đóng gói mà LAPACK sử dụng. cuSPARSE sử dụng "LEFT_RIGHT", đây là cách căn chỉnh ngược lại.

Đầu ra công khai <T> asOutput ()

Trả về phần điều khiển tượng trưng của một tenxơ.

Đầu vào của các hoạt động TensorFlow là đầu ra của một hoạt động TensorFlow khác. Phương pháp này được sử dụng để thu được một thẻ điều khiển mang tính biểu tượng đại diện cho việc tính toán đầu vào.

public static MatrixDiagPartV3 <T> tạo (Phạm vi phạm vi , đầu vào Toán hạng <T>, Toán hạng <Số nguyên> k, Toán hạng <T> giá trị đệm, Tùy chọn... tùy chọn)

Phương thức gốc để tạo một lớp bao bọc một thao tác MatrixDiagPartV3 mới.

Thông số
phạm vi phạm vi hiện tại
đầu vào Xếp hạng tenxơ `r` trong đó `r >= 2`.
k (Các) khoảng lệch chéo. Giá trị dương có nghĩa là đường chéo lớn, 0 là đường chéo chính và giá trị âm có nghĩa là đường chéo phụ. `k` có thể là một số nguyên đơn (đối với một đường chéo) hoặc một cặp số nguyên chỉ định đầu dưới và đầu cao của dải ma trận. `k[0]` không được lớn hơn `k[1]`.
giá trị đệm Giá trị để lấp đầy khu vực bên ngoài dải chéo được chỉ định. Mặc định là 0.
tùy chọn mang các giá trị thuộc tính tùy chọn
Trả lại
  • một phiên bản mới của MatrixDiagPartV3

Đầu ra công khai <T> đường chéo ()

(Các) đường chéo được trích xuất.