DML_SLICE_OPERATOR_DESC 구조체(directml.h)
입력 텐서의 단일 하위 영역("조각")을 추출합니다.
조각에 복사된 요소는 각 차원에 대해 세 개의 값을 사용하여 결정됩니다.
- 오프셋은 차원에 복사할 첫 번째 요소를 표시합니다.
- 크기는 차원에 복사할 요소 수를 표시합니다.
- stride는 차원의 요소 증가 또는 단계를 나타냅니다.
제공된 오프셋, 크기 및 Strides는 입력 텐서의 범위 내에 있는 요소만 복사해야 합니다(범위를 벗어난 읽기는 허용되지 않음). 조각의 크기 는 출력 텐서 크기와 정확히 일치해야 합니다. 일반적으로 복사된 요소는 다음과 같이 계산됩니다.
OutputTensor[OutputCoordinates] = InputTensor[Offsets + Strides * OutputCoordinates]
구문
struct DML_SLICE_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT DimensionCount;
const UINT *Offsets;
const UINT *Sizes;
const UINT *Strides;
};
멤버
InputTensor
형식: const DML_TENSOR_DESC*
조각을 추출할 텐서입니다.
OutputTensor
형식: const DML_TENSOR_DESC*
조각화된 데이터 결과를 쓸 텐서입니다.
DimensionCount
형식: UINT
차원 수입니다. 이 필드는 Offsets, Sizes 및 Strides 배열의 크기를 결정합니다. 이 값은 입력 및 출력 텐서의 DimensionCount 와 일치해야 합니다. 이 값은 1에서 DML_FEATURE_LEVEL_3_0
8 사이여야 합니다( 포함). 이전 기능 수준에서는 4 또는 5 값이 필요합니다.
Offsets
형식: _Field_size_(DimensionCount) const UINT*
요소에서 입력 텐서의 각 차원을 따라 조각의 시작을 포함하는 배열입니다.
Sizes
형식: _Field_size_(DimensionCount) const UINT*
요소의 각 차원을 따라 조각의 크기를 포함하는 배열입니다. 이 배열의 값은 출력 텐서에 지정된 크기와 일치해야 합니다.
Strides
형식: _Field_size_(DimensionCount) const UINT*
입력 텐서의 각 차원(요소)을 따라 조각의 보폭을 포함하는 배열입니다. 1보다 큰 보폭은 입력 텐서의 요소를 건너뛸 수 있음을 나타냅니다(예: 2의 보폭은 차원을 따라 매 초마다 선택됨).
예제
다음 예제에서는 동일한 입력 텐서를 사용합니다.
InputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]]]]
예제 1. 연속 조각
Offsets = {0, 0, 1, 2}
Sizes = {1, 1, 3, 2}
Strides = {1, 1, 1, 1}
OutputTensor: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[ 7, 8],
[11, 12],
[15, 16]]]]
예제 2. 스트라이드 조각
Offsets = {0, 0, 1, 0}
Sizes = {1, 1, 2, 2}
Strides = {1, 1, 2, 3}
OutputTensor: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[ 5, 8],
[13, 16]]]]
설명
이 연산자의 최신 버전인 DML_SLICE1_OPERATOR_DESC 에 DML_FEATURE_LEVEL_2_1
도입되었습니다.
가용성
이 연산자는 에서 DML_FEATURE_LEVEL_1_0
도입되었습니다.
텐서 제약 조건
InputTensor 및 OutputTensor 에는 동일한 DataType 및 DimensionCount가 있어야 합니다.
텐서 지원
DML_FEATURE_LEVEL_4_1 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 1-8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
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 |
OutputTensor | 출력 | 1-8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4~5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | 출력 | 4~5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_1_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4~5 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
OutputTensor | 출력 | 4~5 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
요구 사항
요구 사항 | 값 |
---|---|
헤더 | directml.h |