Partager via


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