DML_NONZERO_COORDINATES_OPERATOR_DESC 구조체(directml.h)
입력 텐서의 0이 아닌 모든 요소의 N차원 좌표를 계산합니다.
이 연산자는 각 행 M이 입력에서 0이 아닌 값의 N차원 좌표를 포함하는 값의 MxN 행렬을 생성합니다. FLOAT32 또는 FLOAT16 입력을 사용하는 경우 음수 및 양수 0(0.0f 및 -0.0f)은 이 연산자를 위해 0으로 처리됩니다.
연산자는 OutputCoordinatesTensor 의 크기가 입력의 모든 요소가 0이 아닌 최악의 시나리오를 수용할 수 있을 만큼 커야 합니다. 이 연산자는 OutputCountTensor를 통해 0이 아닌 요소의 수를 반환하며, 호출자는 OutputCoordinatesTensor에 기록된 좌표 수를 확인하기 위해 검사할 수 있습니다.
구문
struct DML_NONZERO_COORDINATES_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputCountTensor;
const DML_TENSOR_DESC *OutputCoordinatesTensor;
};
멤버
InputTensor
형식: const DML_TENSOR_DESC*
입력 텐서입니다.
OutputCountTensor
형식: const DML_TENSOR_DESC*
입력 텐서에서 0이 아닌 요소의 수를 보유하는 출력 텐서입니다. 이 텐서는 스칼라여야 합니다. 즉, 이 텐서의 크기는 모두 1이어야 합니다. 이 텐서의 형식은 UINT32여야 합니다.
OutputCoordinatesTensor
형식: const DML_TENSOR_DESC*
0이 아닌 입력 요소의 N차원 좌표를 보유하는 출력 텐서입니다.
이 텐서의 크기{1,1,M,N}
(DimensionCount가 4인 경우) 또는 {1,1,1,M,N}
(DimensionCount가 5인 경우)가 있어야 합니다. 여기서 M은 InputTensor의 총 요소 수이고 N은 입력의 DimensionCount까지 InputTensor의 유효 순위보다 크거나 같아야 합니다.
텐서의 유효 순위는 크기 1의 선행 차원을 제외한 해당 텐서의 DimensionCount 에 의해 결정됩니다. 예를 들어 크기가 인 텐서의 {1,2,3,4}
유효 순위는 3이며 크기가 인 텐서도 마찬가지입니다 {1,1,5,5,5}
. 크기가 있는 텐서의 {1,1,1,1}
유효 순위는 0입니다.
크기가 인 InputTensor를 고려합니다{1,1,12,5}
. 이 입력 텐서에는 60개의 요소가 포함되며 유효 순위는 2입니다. 이 예제에서 OutputCoordinatesTensor 의 모든 유효한 크기는 형식 {1,1,60,N}
입니다. 여기서 N >= 2이지만 DimensionCount 보다 크지는 않습니다(이 예제에서는 4).
이 텐서에 기록된 좌표는 오름차순 요소 인덱스로 정렬되도록 보장됩니다. 예를 들어 입력 텐서의 좌표 , 및 에 0이 아닌 3개의 {1,0}값이 있는 경우 OutputCoordinatesTensor에 기록된 값은 입니다[[0,5], [1,0], [1,2]]
.{0,5}{1,2}
이 텐서에는 입력 텐서의 요소 수와 동일한 차원 M이 필요하지만 이 연산자는 이 텐서에 최대 OutputCount 요소만 씁니다. OutputCount는 스칼라 OutputCountTensor를 통해 반환됩니다.
참고
이 연산자가 완료되면 OutputCount 이외의 이 텐서의 나머지 요소는 정의되지 않습니다. 이러한 요소의 값에 의존해서는 안 됩니다.
예제
InputTensor: (Sizes:{1,1,2,4}, DataType:FLOAT32)
[[1.0f, 0.0f, 0.0f, 2.0f],
[-0.0f, 3.5f, 0.0f, -5.2f]]
OutputCountTensor: (Sizes:{1,1,1,1}, DataType:UINT32)
[4]
OutputCoordinatesTensor: (Sizes:{1,1,8,3}, DataType:UINT32)
[[0, 0, 0],
[0, 0, 3],
[0, 1, 1],
[0, 1, 3],
[0, 0, 0], //
[0, 0, 0], // Values in rows >= OutputCountTensor (4 in
[0, 0, 0], // this case) are left undefined
[0, 0, 0]] //
설명
가용성
이 연산자는 에서 DML_FEATURE_LEVEL_3_0
도입되었습니다.
텐서 지원
DML_FEATURE_LEVEL_4_0 이상
텐서 | 종류 | 차원 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|---|
InputTensor | 입력 | { [D0], [D1], [D2], [D3], [D4], [D5], [D6], D7 } | 1-8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputCountTensor | 출력 | { [1], [1], [1], [1], [1], [1], [1], 1 } | 1-8 | Uint32 |
OutputCoordinatesTensor | 출력 | { [1], [1], [1], [1], [1], [1], M, N } | 2~8 | Uint32 |
DML_FEATURE_LEVEL_3_0 이상
텐서 | 종류 | 차원 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|---|
InputTensor | 입력 | { [D0], D1, D2, D3, D4 } | 4~5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputCountTensor | 출력 | { [1], 1, 1, 1, 1 } | 4~5 | Uint32 |
OutputCoordinatesTensor | 출력 | { [1], 1, 1, M, N } | 4~5 | Uint32 |
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 빌드 20348 |
지원되는 최소 서버 | Windows 10 빌드 20348 |
머리글 | directml.h |