Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 |