다음을 통해 공유


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 감소의 결과입니다.

  • DimensionCountInputTensor.DimensionCount 와 일치해야 합니다(입력 텐서의 순위는 유지됨).
  • 크기는 크기가 1이어야 하는 축소된 축에 포함된 차원을 제외하고 InputTensor.Sizes와 일치해야 합니다.

AxisCount

형식: UINT

줄일 축의 수입니다. 이 필드는 축 배열의 크기를 결정 합니다 .

Axes

형식: _Field_size_(AxisCount) const UINT*

줄일 축입니다. 값은 범위에 [0, InputTensor.DimensionCount - 1]있어야 합니다.

AxisDirection

형식: DML_AXIS_DIRECTION

여러 입력 요소의 값이 같은 경우 선택할 인덱스를 결정합니다.

  • 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이어야 하는 축소된 축을 제외하고 입력 텐서 크기와 동일해야 합니다.

AxisDirectionDML_AXIS_DIRECTION_INCREASING 경우 이 API는 DML_REDUCE_FUNCTION_ARGMAX DML_REDUCE_OPERATOR_DESC 것과 같습니다.

이 기능의 하위 집합은 DML_REDUCE_OPERATOR_DESC 연산자를 통해 노출되며 이전 DirectML 기능 수준에서 지원됩니다.

가용성

이 연산자는 에서 DML_FEATURE_LEVEL_3_0도입되었습니다.

텐서 제약 조건

InputTensorOutputTensor 에는 동일한 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