다음을 통해 공유


DML_GATHER_ELEMENTS_OPERATOR_DESC 구조체(directml.h)

인덱스 텐서를 사용하여 지정된 축을 따라 입력 텐서에서 요소를 수집하여 입력에 다시 매핑합니다. 이 연산자는 축, 입력 차원 수 및 인덱스 차원 수에 따라 정확한 동작을 사용하여 다음 의사 코드를 수행합니다.

output[i, j, k, ...] = input[index[i, j, k, ...], j, k, ...] // if axis == 0
output[i, j, k, ...] = input[i, index[i, j, k, ...], k, ...] // if axis == 1
output[i, j, k, ...] = input[i, j, index[i, j, k, ...], ...] // if axis == 2
...

구문

struct DML_GATHER_ELEMENTS_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *IndicesTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
};

멤버

InputTensor

형식: const DML_TENSOR_DESC*

읽을 텐서입니다.

IndicesTensor

형식: const DML_TENSOR_DESC*

현재 축을 따라 입력 텐서에 대한 인덱스입니다. 크기는 제외한 모든 차원의 InputTensor.Sizes와 일치해야 합니다.

부터 이 연산자는 이 텐서와 DML_FEATURE_LEVEL_3_0함께 서명된 정수 형식을 사용할 때 음수 인덱스 값을 지원합니다. 음수 인덱스는 축 차원의 끝을 기준으로 하는 것으로 해석됩니다. 예를 들어 -1의 인덱스는 해당 차원을 따라 마지막 요소를 나타냅니다.

OutputTensor

형식: const DML_TENSOR_DESC*

결과를 쓸 텐서입니다. 크기IndicesTensor.Sizes와 일치해야 하며 DataTypeInputTensor.DataType과 일치해야 합니다.

Axis

형식: UINT

에 따라 [0, *InputTensor.DimensionCount*)수집할 InputTensor의 축 차원입니다.

예제

Axis = 0

InputTensor: (Sizes:{3,3}, DataType:FLOAT32)
    [[1, 2, 3],
     [4, 5, 6],
     [7, 8, 9]]

IndicesTensor: (Sizes:{2,3}, DataType:UINT32)
    [[1, 2, 0],
     [2, 0, 0]]

// output[y, x] = input[indices[y, x], x]
OutputTensor: (Sizes:{2,3}, DataType:UINT32)
    [[4, 8, 3], // select elements vertically from data
     [7, 2, 3]]

가용성

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

텐서 제약 조건

  • IndicesTensor, InputTensorOutputTensor 에는 동일한 DimensionCount가 있어야 합니다.
  • InputTensorOutputTensor 에는 동일한 DataType이 있어야 합니다.

텐서 지원

DML_FEATURE_LEVEL_4_1 이상

텐서 종류 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 1~8개 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
IndicesTensor 입력 1~8개 INT64, INT32, UINT64, UINT32
OutputTensor 출력 1~8개 FLOAT64, 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
IndicesTensor 입력 1~8개 INT64, INT32, UINT64, UINT32
OutputTensor 출력 1~8개 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_1 이상

텐서 종류 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
IndicesTensor 입력 4 Uint32
OutputTensor 출력 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 빌드 20348
지원되는 최소 서버 Windows 10 빌드 20348
머리글 directml.h