MatrixDiagV3

공개 최종 클래스 MatrixDiagV3

주어진 배치 대각선 값을 갖는 배치 대각선 텐서를 반환합니다.

`대각선`의 내용이 행렬의 `k[0]`번째부터 `k[1]`번째 대각선이고 다른 모든 항목은 `padding`으로 채워진 텐서를 반환합니다. `num_rows` 및 `num_cols`는 출력의 가장 안쪽 행렬의 차원을 지정합니다. 둘 다 지정되지 않은 경우 연산은 가장 안쪽 행렬이 정사각형이라고 가정하고 'k'와 '대각선'의 가장 안쪽 차원에서 크기를 추론합니다. 그 중 하나만 지정된 경우 작업은 지정되지 않은 값이 다른 기준에 따라 가능한 가장 작은 값이라고 가정합니다.

`대각선`에 `r` 치수 `[I, J, ..., L, M, N]`이 있다고 가정합니다. 출력 텐서는 대각선이 하나만 주어지면 `[I, J, ..., L, M, num_rows, num_cols]` 모양의 `r+1` 순위를 갖습니다(`k`는 정수이거나 `k[0]). == k[1]`). 그렇지 않으면 `[I, J, ..., L, num_rows, num_cols]` 형태의 순위 `r`을 갖습니다.

'대각선'의 가장 안쪽 두 번째 차원은 이중 의미를 갖습니다. `k`가 스칼라이거나 `k[0] == k[1]`인 경우 `M`은 배치 크기 [I, J, ..., M]의 일부이고 출력 텐서는

output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, n-max(d_upper, 0)] ; if n - m == d_upper
     padding_value                             ; otherwise
 
입니다. 그렇지 않으면 `M`은 동일한 배치(`M = k[1]-k[0]+1`)에 있는 행렬의 대각선 수로 처리되고 출력 텐서는 다음과 같습니다.
output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, diag_index, index_in_diag] ; if k[0] <= d <= k[1]
     padding_value                                     ; otherwise
 
여기서 `d = n - m`, `diag_index = [k] - d` 및 `index_in_diag = n - max(d, 0) + offset`입니다.

'오프셋'은 대각선 정렬이 오른쪽인 경우를 제외하면 0입니다.

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
 }
여기서 `diag_len(d) = min(cols - max(d, 0), 행 + min(d, 0))`.

예:

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

중첩 클래스

수업 MatrixDiagV3.옵션 MatrixDiagV3 의 선택적 속성

공개 방법

정적 MatrixDiagV3.Options
align (문자열 정렬)
출력 <T>
출력 ()
텐서의 기호 핸들을 반환합니다.
정적 <T> MatrixDiagV3 <T>
생성 ( Scope 범위, Operand <T> 대각선, Operand <Integer> k, Operand <Integer> numRows, Operand <Integer> numCols, Operand <T> paddingValue, Options... 옵션)
새로운 MatrixDiagV3 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
출력 <T>
출력 ()
`k`가 정수이거나 `k[0] == k[1]`이면 순위 `r+1`을 가지며, 그렇지 않으면 `r` 순위를 가집니다.

상속된 메서드

공개 방법

공개 정적 MatrixDiagV3.Options 정렬 (문자열 정렬)

매개변수
맞추다 일부 대각선은 'max_diag_len'보다 짧으며 패딩이 필요합니다. `align`은 상부 대각선과 하부 대각선이 각각 어떻게 정렬되어야 하는지를 지정하는 문자열입니다. 가능한 정렬은 "RIGHT_LEFT"(기본값), "LEFT_RIGHT", "LEFT_LEFT" 및 "RIGHT_RIGHT"의 네 가지입니다. "RIGHT_LEFT"는 위쪽 대각선을 오른쪽(행 왼쪽 채우기)으로 정렬하고 하위 대각선을 왼쪽(행 오른쪽 채우기)으로 정렬합니다. LAPACK이 사용하는 패킹 형식입니다. cuSPARSE는 반대 정렬인 "LEFT_RIGHT"를 사용합니다.

공개 출력 <T> asOutput ()

텐서의 기호 핸들을 반환합니다.

TensorFlow 작업에 대한 입력은 다른 TensorFlow 작업의 출력입니다. 이 메서드는 입력 계산을 나타내는 기호 핸들을 얻는 데 사용됩니다.

공개 정적 MatrixDiagV3 <T> 생성 ( 범위 범위, 피연산자 <T> 대각선, 피연산자 <Integer> k, 피연산자 <Integer> numRows, 피연산자 <Integer> numCols, 피연산자 <T> paddingValue, 옵션... 옵션)

새로운 MatrixDiagV3 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.

매개변수
범위 현재 범위
대각선 순위 `r`, 여기서 `r >= 1`
케이 대각선 오프셋. 양수 값은 상부 대각선, 0은 주 대각선, 음수 값은 하부 대각선을 의미합니다. 'k'는 단일 정수(단일 대각선의 경우)이거나 행렬 밴드의 최저 및 최고 끝을 지정하는 정수 쌍일 수 있습니다. `k[0]`은 `k[1]`보다 클 수 없습니다.
행 수 출력 행렬의 행 수입니다. 제공되지 않은 경우 연산은 출력 행렬이 정사각 행렬이라고 가정하고 k와 '대각선'의 가장 안쪽 차원에서 행렬 크기를 추론합니다.
numCols 출력 행렬의 열 수입니다. 제공되지 않은 경우 연산은 출력 행렬이 정사각 행렬이라고 가정하고 k와 '대각선'의 가장 안쪽 차원에서 행렬 크기를 추론합니다.
패딩값 지정된 대각선 범위 밖의 영역을 채울 숫자입니다. 기본값은 0입니다.
옵션 선택적 속성 값을 전달합니다.
보고
  • MatrixDiagV3의 새 인스턴스

공개 출력 <T> 출력 ()

`k`가 정수이거나 `k[0] == k[1]`이면 순위 `r+1`을 가지며, 그렇지 않으면 `r` 순위를 가집니다.