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
도입되었습니다.
텐서 제약 조건
InputTensor 및 OutputTensors 에는 동일한 DataType 및 DimensionCount가 있어야 합니다.
텐서 지원
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 |