다음을 통해 공유


DML_SPLIT_OPERATOR_DESC 구조체(directml.h)

축을 따라 입력 텐서를 여러 출력 텐서로 분할합니다.

분할 축을 제외한 모든 입력 및 출력 텐서의 크기는 같아야 합니다. 분할 축의 입력 텐서 크기에 따라 가능한 분할이 결정됩니다. 예를 들어 입력 텐서의 분할 축 크기가 3인 경우 1+1+1(3개 출력), 1+2(2개 출력), 2+1(2개 출력) 또는 3개(입력 텐서의 복사본인 1개 출력)와 같은 잠재적 분할이 있습니다. 출력 텐서의 분할 축 크기는 입력 텐서의 분할 축 크기를 정확히 합산해야 합니다. 이러한 제약 조건은 아래 의사 코드에 설명되어 있습니다.

splitSize = 0;

for (i = 0; i < OutputCount; i++) {
    assert(outputTensors[i]->DimensionCount == inputTensor->DimensionCount);
    for (dim = 0; dim < inputTensor->DimensionCount; dim++) {
        if (dim == Axis) { splitSize += outputTensors[i]->Sizes[dim]; }
        else { assert(outputTensors[i]->Sizes[dim] == inputTensor->Sizes[dim]); }
    }
}

assert(splitSize == inputTensor->Sizes[Axis]);

단일 출력 텐서로 분할하면 입력 텐서의 복사본이 생성됩니다.

이 연산자는 DML_JOIN_OPERATOR_DESC 역입니다.

구문

struct DML_SPLIT_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  UINT                  OutputCount;
  const DML_TENSOR_DESC *OutputTensors;
  UINT                  Axis;
};

멤버

InputTensor

형식: const DML_TENSOR_DESC*

여러 출력 텐서로 분할할 텐서입니다.

OutputCount

형식: UINT

이 필드는 OutputTensors 배열의 크기를 결정합니다. 이 값은 0보다 커야 합니다.

OutputTensors

형식: const DML_TENSOR_DESC*

입력 텐서에서 분할된 텐서에 대한 설명을 포함하는 배열입니다. 출력 크기는 분할 축을 제외하고 입력 텐서와 크기가 같아야 합니다.

Axis

형식: UINT

분할할 입력 텐서 차원의 인덱스입니다. 모든 입력 및 출력 텐서는 이 축을 제외한 모든 차원의 크기가 동일해야 합니다. 이 값은 범위에 [0, InputTensor.DimensionCount - 1]있어야 합니다.

예제

다음 예제에서는 동일한 입력 텐서를 사용합니다.

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

예제 1. 축 2 분할

OutputCount: 3
Axis: 2

OutputTensors[0]: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[1, 2],
   [3, 4]]]]

OutputTensors[1]: (Sizes:{1, 1, 1, 2}, DataType:FLOAT32)
[[[[5, 6]]]]

OutputTensors[2]: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[7, 8],
   [9, 10],
   [11, 12]]]]

예제 2. 축 분할 3

OutputCount: 2
Axis: 3

OutputTensors[0]: (Sizes:{1, 1, 6, 1}, DataType:FLOAT32)
[[[[1],
   [3],
   [5],
   [7],
   [9],
   [11]]]]

OutputTensors[1]: (Sizes:{1, 1, 6, 1}, DataType:FLOAT32)
[[[[2],
   [4],
   [6],
   [8],
   [10],
   [12]]]]

가용성

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

텐서 제약 조건

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

텐서 지원

DML_FEATURE_LEVEL_4_1 이상

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

DML_FEATURE_LEVEL_1_0 이상

텐서 종류 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 4 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16
OutputTensors 출력 배열 4 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16

요구 사항

요구 사항
헤더 directml.h