structure DML_SPLIT_OPERATOR_DESC (directml.h)
Fractionne un tenseur d’entrée le long d’un axe en plusieurs tenseurs de sortie.
Tous les tenseurs d’entrée et de sortie doivent avoir les mêmes tailles, à l’exception de l’axe fractionné. La taille du tenseur d’entrée dans l’axe de fractionnement détermine les fractionnements possibles. Par exemple, si l’axe de fractionnement du tenseur d’entrée a la taille 3, il existe ces fractionnements potentiels : 1+1+1 (3 sorties), 1+2 (2 sorties), 2+1 (2 sorties) ou 3 (1 sortie, qui est simplement une copie du tenseur d’entrée). Les tailles d’axe de fractionnement des tenseurs de sortie doivent correspondre exactement à la taille de l’axe fractionné du tenseur d’entrée. Ces contraintes sont illustrées dans le pseudocode ci-dessous.
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]);
La division en un tenseur de sortie unique produit simplement une copie du tenseur d’entrée.
Cet opérateur est l’inverse de DML_JOIN_OPERATOR_DESC.
Syntaxe
struct DML_SPLIT_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
UINT OutputCount;
const DML_TENSOR_DESC *OutputTensors;
UINT Axis;
};
Membres
InputTensor
Type : const DML_TENSOR_DESC*
Tenseur à fractionner en plusieurs tenseurs de sortie.
OutputCount
Type : UINT
Ce champ détermine la taille du tableau OutputTensors . Cette valeur doit être supérieure à 0.
OutputTensors
Type : const DML_TENSOR_DESC*
Tableau contenant les descriptions des tenseurs séparés du tenseur d’entrée. Les tailles de sortie doivent avoir les mêmes tailles que le tenseur d’entrée, à l’exception de l’axe de fractionnement.
Axis
Type : UINT
Index de la dimension du tenseur d’entrée à fractionner. Tous les tenseurs d’entrée et de sortie doivent avoir des tailles identiques dans toutes les dimensions, à l’exception de cet axe. Cette valeur doit se trouver dans la plage [0, InputTensor.DimensionCount - 1]
.
Exemples
Les exemples suivants utilisent ce même tenseur d’entrée.
InputTensor: (Sizes:{1, 1, 6, 2}, DataType:FLOAT32)
[[[[1, 2],
[3, 4],
[5, 6],
[7, 8],
[9, 10],
[11, 12]]]]
Exemple 1. Axe de fractionnement 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]]]]
Exemple 2. Axe de fractionnement 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]]]]
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_1_0
.
Contraintes tensoriels
InputTensor et OutputTensors doivent avoir les mêmes DataType et DimensionCount.
Prise en charge de Tensor
DML_FEATURE_LEVEL_4_1 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 1 à 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensors | Tableau de sorties | 1 à 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 1 à 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensors | Tableau de sorties | 1 à 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensors | Tableau de sorties | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_1_0 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 4 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
OutputTensors | Tableau de sorties | 4 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | directml.h |