DML_ARGMAX_OPERATOR_DESC 구조체(directml.h)
입력 텐서의 하나 이상의 차원 내에서 최대값 요소의 인덱스를 출력합니다.
각 출력 요소는 입력 텐서의 하위 집합에 argmax 감소를 적용한 결과입니다. argmax 함수는 입력 요소 집합 내에서 최대값 요소의 인덱스를 출력합니다. 각 감소와 관련된 입력 요소는 제공된 입력 축에 의해 결정됩니다. 마찬가지로 각 출력 인덱스는 제공된 입력 축과 관련이 있습니다. 모든 입력 축이 지정된 경우 연산자는 단일 argmax 축소를 적용하고 단일 출력 요소를 생성합니다.
구문
struct DML_ARGMAX_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT AxisCount;
const UINT *Axes;
DML_AXIS_DIRECTION AxisDirection;
};
멤버
InputTensor
형식: const DML_TENSOR_DESC*
읽을 텐서입니다.
OutputTensor
형식: const DML_TENSOR_DESC*
결과를 쓸 텐서입니다. 각 출력 요소는 InputTensor의 요소 하위 집합에 대한 argmax 감소의 결과입니다.
- DimensionCount 는 InputTensor.DimensionCount 와 일치해야 합니다(입력 텐서의 순위는 유지됨).
- 크기는 크기가 1이어야 하는 축소된 축에 포함된 차원을 제외하고 InputTensor.Sizes와 일치해야 합니다.
AxisCount
형식: UINT
줄일 축의 수입니다. 이 필드는 축 배열의 크기를 결정 합니다 .
Axes
형식: _Field_size_(AxisCount) const UINT*
줄일 축입니다. 값은 범위에 [0, InputTensor.DimensionCount - 1]
있어야 합니다.
AxisDirection
여러 입력 요소의 값이 같은 경우 선택할 인덱스를 결정합니다.
- DML_AXIS_DIRECTION_INCREASING 첫 번째 최대값 요소의 인덱스(예:
argmax({3,2,1,2,3}) = 0
)를 반환합니다. - DML_AXIS_DIRECTION_DECREASING 마지막 최대값 요소의 인덱스(예:
argmax({3,2,1,2,3}) = 4
)를 반환합니다.
예제
이 섹션의 예제에서는 모두 동일한 2차원 입력 텐서를 사용합니다.
InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
[3, 0, 4],
[2, 5, 2]]
예제 1. 열 에 argmax 적용
AxisCount: 1
Axes: {0}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{1, 3}, DataType:UINT32)
[[1, // argmax({1, 3, 2})
2, // argmax({2, 0, 5})
1]] // argmax({3, 4, 2})
예제 2. 행 에 argmax 적용
AxisCount: 1
Axes: {1}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{3, 1}, DataType:UINT32)
[[2], // argmax({1, 2, 3})
[2], // argmax({3, 0, 4})
[1]] // argmax({2, 5, 2})
예제 3. 모든 축에 argmax 적용(전체 텐서)
AxisCount: 2
Axes: {0, 1}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{1, 1}, DataType:UINT32)
[[7]] // argmax({1, 2, 3, 3, 0, 4, 2, 5, 2})
설명
출력 텐서 크기는 1이어야 하는 축소된 축을 제외하고 입력 텐서 크기와 동일해야 합니다.
AxisDirection이 DML_AXIS_DIRECTION_INCREASING 경우 이 API는 DML_REDUCE_FUNCTION_ARGMAX DML_REDUCE_OPERATOR_DESC 것과 같습니다.
이 기능의 하위 집합은 DML_REDUCE_OPERATOR_DESC 연산자를 통해 노출되며 이전 DirectML 기능 수준에서 지원됩니다.
가용성
이 연산자는 에서 DML_FEATURE_LEVEL_3_0
도입되었습니다.
텐서 제약 조건
InputTensor 및 OutputTensor 에는 동일한 DimensionCount가 있어야 합니다.
텐서 지원
DML_FEATURE_LEVEL_4_1 이상
텐서 | Kind | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1-8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | 출력 | 1-8 | INT64, INT32, UINT64, UINT32 |
DML_FEATURE_LEVEL_3_0 이상
텐서 | Kind | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1-8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | 출력 | 1-8 | INT64, INT32, UINT64, UINT32 |
요구 사항
지원되는 최소 클라이언트 | Windows 10 빌드 20348 |
지원되는 최소 서버 | Windows 10 빌드 20348 |
머리글 | directml.h |