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와 일치해야 하며 DataType은 InputTensor.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
, InputTensor 및 OutputTensor 에는 동일한 DimensionCount가 있어야 합니다.- InputTensor 및 OutputTensor 에는 동일한 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 |