DML_TOP_K1_OPERATOR_DESC 구조체(directml.h)
InputTensor축을 따라 각 시퀀스에서 가장 크거나 작은 K 요소를 선택하고 OutputValueTensor 및 OutputIndexTensor해당 요소의 값과 인덱스를 각각 반환합니다. 시퀀스InputTensorAxis 차원을 따라 존재하는 요소 집합 중 하나를 참조합니다.
가장 큰 K 요소를 선택할지 또는 가장 작은 K 요소를 선택할지 여부는 AxisDirection사용하여 제어할 수 있습니다.
통사론
struct DML_TOP_K1_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputValueTensor;
const DML_TENSOR_DESC *OutputIndexTensor;
UINT Axis;
UINT K;
DML_AXIS_DIRECTION AxisDirection;
};
회원
InputTensor
형식: const DML_TENSOR_DESC*
선택할 요소가 포함된 입력 텐서입니다.
OutputValueTensor
형식: const DML_TENSOR_DESC*
상위 K 요소의 값을 쓸 출력 텐서입니다. 상위 K 요소는 AxisDirection값에 따라 가장 큰 요소인지 또는 가장 작은 요소인지에 따라 선택됩니다. 이 텐서의 크기는 InputTensor같아야 합니다. Axis 매개 변수로 지정된 차원의 제외하고 크기는 K같아야 합니다.
각 입력 시퀀스에서 선택한 K 값은 AxisDirectionDML_AXIS_DIRECTION_DECREASING경우 내림차순(가장 큰 값에서 가장 작은 값)으로 정렬되도록 보장됩니다. 그렇지 않으면 반대의 경우도 마찬가지이며 선택한 값은 오름차순(가장 작은 값에서 가장 큰 값)으로 정렬되도록 보장됩니다.
OutputIndexTensor
형식: const DML_TENSOR_DESC*
상위 K 요소의 인덱스를 쓸 출력 텐서입니다. 이 텐서의 크기는 InputTensor같아야 합니다. Axis 매개 변수로 지정된 차원의 제외하고 크기는 K같아야 합니다.
이 텐서에서 반환된 인덱스는 시퀀스의 시작 부분(텐서의 시작 부분과 반대)을 기준으로 측정됩니다. 예를 들어 인덱스 0은 항상 축의 모든 시퀀스에 대한 첫 번째 요소를 참조합니다.
상위 K의 두 개 이상의 요소가 동일한 값(즉, 동률일 때)을 갖는 경우 두 요소의 인덱스가 포함되며 오름차순 요소 인덱스로 정렬되도록 보장됩니다. 이는 AxisDirection값과 관계없이 true입니다.
Axis
형식: UINT
요소를 선택할 차원의 인덱스입니다. 이 값은 InputTensorDimensionCount 미만이어야 합니다.
K
형식: UINT
선택할 요소의 수입니다. K 0보다 커야 하지만 축지정된 차원을 따라 InputTensor 요소 수보다 작아야 합니다.
AxisDirection
DML_AXIS_DIRECTION 열거형의 값입니다. DML_AXIS_DIRECTION_INCREASING설정하면 이 연산자는 값이 증가하는 순서대로 가장 작은K 요소를 반환합니다. 그렇지 않으면 가장 큰K 요소를 감소 순서로 반환합니다.
예제
예제 1
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 0, 1, 10, 11],
[ 3, 2, 9, 8],
[ 4, 5, 6, 7]]]]
Axis: 3
K: 2
AxisDirection: DML_AXIS_DIRECTION_DECREASING
OutputValueTensor: (Sizes:{1,1,3,2}, DataType:FLOAT32)
[[[[11, 10],
[ 9, 8],
[ 7, 6]]]]
OutputIndexTensor: (Sizes:{1,1,3,2}, DataType:UINT32)
[[[[3, 2],
[2, 3],
[3, 2]]]]
예제 2. 다른 축 사용
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 0, 1, 10, 11],
[ 3, 2, 9, 8],
[ 4, 5, 6, 7]]]]
Axis: 2
K: 2
AxisDirection: DML_AXIS_DIRECTION_DECREASING
OutputValueTensor: (Sizes:{1,1,2,4}, DataType:FLOAT32)
[[[[ 4, 5, 10, 11],
[ 3, 2, 9, 8]]]]
OutputIndexTensor: (Sizes:{1,1,2,4}, DataType:UINT32)
[[[[2, 2, 0, 0],
[1, 1, 1, 1]]]]
예제 3. 연결된 값
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 2, 2, 3],
[3, 4, 5, 5],
[6, 6, 6, 6]]]]
Axis: 3
K: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
OutputValueTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[3, 2, 2],
[5, 5, 4],
[6, 6, 6]]]]
OutputIndexTensor: (Sizes:{1,1,3,3}, DataType:UINT32)
[[[[3, 1, 2],
[2, 3, 1],
[0, 1, 2]]]]
예제 4. 축 방향 늘리기
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 2, 2, 3],
[3, 4, 5, 5],
[6, 6, 6, 6]]]]
Axis: 3
K: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputValueTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[1, 2, 2],
[3, 4, 5],
[6, 6, 6]]]]
OutputIndexTensor: (Sizes:{1,1,3,3}, DataType:UINT32)
[[[[0, 1, 2],
[0, 1, 2],
[0, 1, 2]]]]
발언
AxisDirectionDML_AXIS_DIRECTION_DECREASING설정하면 이 연산자는 DML_TOP_K_OPERATOR_DESC동일합니다.
가용도
이 연산자는 DML_FEATURE_LEVEL_2_1
도입되었습니다.
Tensor 제약 조건
- InputTensor, OutputIndexTensor및 OutputValueTensor 동일한 DimensionCount있어야 합니다.
- InputTensor 및 OutputValueTensor 동일한 DataType있어야 합니다.
Tensor 지원
DML_FEATURE_LEVEL_5_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1~8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputValueTensor | 출력 | 1~8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputIndexTensor | 출력 | 1~8 | UINT64, UINT32 |
DML_FEATURE_LEVEL_3_1 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1~8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputValueTensor | 출력 | 1~8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputIndexTensor | 출력 | 1~8 | UINT32 |
DML_FEATURE_LEVEL_2_1 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputValueTensor | 출력 | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputIndexTensor | 출력 | 4 | UINT32 |
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 빌드 20348 |
지원되는 최소 서버 | Windows 10 빌드 20348 |
헤더 | directml.h |