다음을 통해 공유


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, SizesStrides 배열의 크기를 결정합니다. 이 값은 입력 및 출력 텐서의 DimensionCount 와 일치해야 합니다. 이 값은 1에서 DML_FEATURE_LEVEL_3_08 사이여야 합니다( 포함). 이전 기능 수준에서는 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_DESCDML_FEATURE_LEVEL_2_1도입되었습니다.

가용성

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

텐서 제약 조건

InputTensorOutputTensor 에는 동일한 DataTypeDimensionCount가 있어야 합니다.

텐서 지원

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