DML_REDUCE_OPERATOR_DESC 구조체(directml.h)
입력 텐서의 하나 이상의 차원 내에서 요소의 감소(합계, 제품, 최소값 등)를 출력합니다.
각 출력 요소는 입력 텐서의 하위 집합에 감소 함수를 적용한 결과입니다. sum과 같은 감소 함수는 입력 요소를 단일 출력 요소에 매핑합니다N
. 각 감소에 관련된 입력 요소는 제공된 입력 축 N
에 의해 결정됩니다. 는 축소된 축 크기의 곱과 같습니다. 모든 입력 축이 지정된 경우 연산자는 전체 입력 텐서에서 축소를 수행하고 단일 출력 요소를 생성합니다.
구문
struct DML_REDUCE_OPERATOR_DESC {
DML_REDUCE_FUNCTION Function;
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT AxisCount;
const UINT *Axes;
};
멤버
Function
입력에 적용할 감소 함수를 지정합니다.
InputTensor
형식: const DML_TENSOR_DESC*
읽을 텐서입니다.
OutputTensor
형식: const DML_TENSOR_DESC*
결과를 쓸 텐서입니다. 각 출력 요소는 InputTensor에서 요소의 하위 집합을 줄인 결과입니다.
- DimensionCount 는 InputTensor.DimensionCount 와 일치해야 합니다(입력 텐서의 순위는 유지됨).
- 크기는 크기가 1이어야 하는 축소된 축에 포함된 차원을 제외하고 InputTensor.Sizes와 일치해야 합니다.
AxisCount
형식: UINT
줄일 축의 수입니다. 이 필드는 축 배열의 크기를 결정 합니다 .
Axes
형식: _Field_size_(AxisCount) const UINT*
줄일 축입니다. 값은 범위에 [0, InputTensor.DimensionCount - 1]
있어야 합니다.
예제
다음 예제에서는 모두 동일한 2차원 입력 텐서를 사용합니다.
InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
[3, 0, 4],
[2, 4, 2]]
예제 1. 열에 합계 적용
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {0}
OutputTensor: (Sizes:{1, 3}, DataType:FLOAT32)
[[6, // sum({1, 3, 2})
6, // sum({2, 0, 4})
9]] // sum({3, 4, 2})
예제 2. 행에 합계 적용
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {1}
OutputTensor: (Sizes:{3, 1}, DataType:FLOAT32)
[[6], // sum({1, 2, 3})
[7], // sum({3, 0, 4})
[8]] // sum({2, 4, 2})
예제 3.모든 축에 합계 적용(전체 텐서)
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 2
Axes: {0, 1}
OutputTensor: (Sizes:{1, 1}, DataType:FLOAT32)
[[21]] // sum({1, 2, 3, 3, 0, 4, 2, 5, 2})
가용성
이 연산자는 에서 DML_FEATURE_LEVEL_1_0
도입되었습니다.
텐서 제약 조건
- 입력 및 출력 텐서 데이터 형식은 항상 정수 데이터 형식을 출력하는 ARGMAX 및 ARGMIN 함수를 사용하는 경우를 제외하고 일치해야 합니다.
- 출력 크기는 1이어야 하는 축소된 축을 제외하고 입력 크기와 동일해야 합니다.
함수에 따른 텐서 지원
ARGMIN 및 ARGMAX
DML_FEATURE_LEVEL_4_1 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
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 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1-8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | 출력 | 1-8 | INT64, INT32, UINT64, UINT32 |
DML_FEATURE_LEVEL_2_1 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | 출력 | 4 | Uint32 |
DML_FEATURE_LEVEL_1_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4 | FLOAT32, FLOAT16 |
OutputTensor | 출력 | 4 | Uint32 |
AVERAGE, L2, LOG_SUM 및 LOG_SUM_EXP
DML_FEATURE_LEVEL_3_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1~8개 | FLOAT32, FLOAT16 |
OutputTensor | 출력 | 1~8개 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_1_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4 | FLOAT32, FLOAT16 |
OutputTensor | 출력 | 4 | FLOAT32, FLOAT16 |
L1 및 SUM_SQUARE
DML_FEATURE_LEVEL_5_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1~8개 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
OutputTensor | 출력 | 1~8개 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
DML_FEATURE_LEVEL_3_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1~8개 | FLOAT32, FLOAT16 |
OutputTensor | 출력 | 1~8개 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_1_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4 | FLOAT32, FLOAT16 |
OutputTensor | 출력 | 4 | FLOAT32, FLOAT16 |
MIN 및 MAX
DML_FEATURE_LEVEL_5_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1~8개 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | 출력 | 1~8개 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1~8개 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | 출력 | 1~8개 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
OutputTensor | 출력 | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
DML_FEATURE_LEVEL_1_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4 | FLOAT32, FLOAT16 |
OutputTensor | 출력 | 4 | FLOAT32, FLOAT16 |
MULTIPLY 및 SUM
DML_FEATURE_LEVEL_5_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1-8 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
OutputTensor | 출력 | 1-8 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
DML_FEATURE_LEVEL_3_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1-8 | FLOAT32, FLOAT16, INT32, UINT32 |
OutputTensor | 출력 | 1-8 | FLOAT32, FLOAT16, INT32, UINT32 |
DML_FEATURE_LEVEL_2_1 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
OutputTensor | 출력 | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
DML_FEATURE_LEVEL_1_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4 | FLOAT32, FLOAT16 |
OutputTensor | 출력 | 4 | FLOAT32, FLOAT16 |
요구 사항
요구 사항 | 값 |
---|---|
헤더 | directml.h |
추가 정보
기능 수준 3_0에서는 DML_REDUCE_FUNCTION_ARGMAX 및 DML_REDUCE_FUNCTION_ARGMIN 사용할 수 있는 기능을 대체하는 이러한 독립 실행형 연산자를 도입했습니다.