DML_REDUCE_OPERATOR_DESC structure (directml.h)
Génère la réduction des éléments (somme, produit, minimum, etc.) dans une ou plusieurs dimensions du tenseur d’entrée.
Chaque élément de sortie est le résultat de l’application d’une fonction de réduction sur un sous-ensemble du tenseur d’entrée. Une fonction de réduction, telle que sum, mappe les N
éléments d’entrée à un élément de sortie unique. Les éléments d’entrée impliqués dans chaque réduction sont déterminés par les axes d’entrée fournis : N
est égal au produit des tailles des axes réduits. Si tous les axes d’entrée sont spécifiés, l’opérateur effectue une réduction sur l’ensemble du tenseur d’entrée et produit un seul élément de sortie.
Syntaxe
struct DML_REDUCE_OPERATOR_DESC {
DML_REDUCE_FUNCTION Function;
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT AxisCount;
const UINT *Axes;
};
Membres
Function
Type : DML_REDUCE_FUNCTION
Spécifie la fonction de réduction à appliquer à l’entrée.
InputTensor
Type : const DML_TENSOR_DESC*
Tenseur à partir duquel lire.
OutputTensor
Type : const DML_TENSOR_DESC*
Tenseur dans lequel écrire les résultats. Chaque élément de sortie est le résultat d’une réduction sur un sous-ensemble d’éléments du inputTensor.
- DimensionCount doit correspondre à InputTensor.DimensionCount (le rang du tenseur d’entrée est conservé).
- Les tailles doivent correspondre à InputTensor.Sizes, à l’exception des dimensions incluses dans les axes réduits, qui doivent être de taille 1.
AxisCount
Type : UINT
Nombre d’axes à réduire. Ce champ détermine la taille du tableau Axes .
Axes
Type : _Field_size_(AxisCount) const UINT*
Axes le long desquels réduire. Les valeurs doivent être dans la plage [0, InputTensor.DimensionCount - 1]
.
Exemples
Les exemples suivants utilisent tous ce même tenseur d’entrée à deux dimensions.
InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
[3, 0, 4],
[2, 4, 2]]
Exemple 1. Application de la somme aux colonnes
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {0}
OutputTensor: (Sizes:{1, 3}, DataType:FLOAT32)
[[6, // sum({1, 3, 2})
6, // sum({2, 0, 4})
9]] // sum({3, 4, 2})
Exemple 2. Application de la somme aux lignes
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {1}
OutputTensor: (Sizes:{3, 1}, DataType:FLOAT32)
[[6], // sum({1, 2, 3})
[7], // sum({3, 0, 4})
[8]] // sum({2, 4, 2})
Exemple 3.Application de la somme à tous les axes (le tenseur entier)
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 2
Axes: {0, 1}
OutputTensor: (Sizes:{1, 1}, DataType:FLOAT32)
[[21]] // sum({1, 2, 3, 3, 0, 4, 2, 5, 2})
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_1_0
.
Contraintes tensoriels
- Les types de données tensoriels d’entrée et de sortie doivent correspondre, sauf lors de l’utilisation des fonctions ARGMAX et ARGMIN, qui génèrent toujours un type de données intégral.
- Les tailles de sortie doivent être identiques aux tailles d’entrée, à l’exception des axes réduits, qui doivent être 1.
Prise en charge des tenseurs en fonction de la fonction
ARGMIN et ARGMAX
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 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | Sortie | 1 à 8 | INT64, INT32, UINT64, UINT32 |
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 |
OutputTensor | Sortie | 1 à 8 | INT64, INT32, UINT64, UINT32 |
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 |
OutputTensor | Sortie | 4 | UINT32 |
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 |
OutputTensor | Sortie | 4 | UINT32 |
MOYENNE, L2, LOG_SUM et LOG_SUM_EXP
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 |
OutputTensor | Sortie | 1 à 8 | FLOAT32, FLOAT16 |
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 |
OutputTensor | Sortie | 4 | FLOAT32, FLOAT16 |
L1 et SUM_SQUARE
DML_FEATURE_LEVEL_5_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, INT64, INT32, UINT64, UINT32 |
OutputTensor | Sortie | 1 à 8 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
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 |
OutputTensor | Sortie | 1 à 8 | FLOAT32, FLOAT16 |
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 |
OutputTensor | Sortie | 4 | FLOAT32, FLOAT16 |
MIN et MAX
DML_FEATURE_LEVEL_5_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, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | Sortie | 1 à 8 | 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 |
OutputTensor | Sortie | 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, UINT32 |
OutputTensor | Sortie | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
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 |
OutputTensor | Sortie | 4 | FLOAT32, FLOAT16 |
MULTIPLIER et SOMME
DML_FEATURE_LEVEL_5_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, INT64, INT32, UINT64, UINT32 |
OutputTensor | Sortie | 1 à 8 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
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, UINT32 |
OutputTensor | Sortie | 1 à 8 | FLOAT32, FLOAT16, INT32, UINT32 |
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, UINT32 |
OutputTensor | Sortie | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
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 |
OutputTensor | Sortie | 4 | FLOAT32, FLOAT16 |
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | directml.h |
Voir aussi
Le niveau de fonctionnalité 3_0 a introduit ces opérateurs autonomes qui remplacent les fonctionnalités disponibles avec DML_REDUCE_FUNCTION_ARGMAX et DML_REDUCE_FUNCTION_ARGMIN.