structure DML_SLICE_GRAD_OPERATOR_DESC (directml.h)
Calcule les gradients de rétropropagation pour Slice (voir DML_SLICE1_OPERATOR_DESC).
Rappelez-vous que DML_SLICE1_OPERATOR_DESC extrait un sous-ensemble d’un tenseur d’entrée. Avec un InputGradientTensor avec les mêmes tailles que la sortie d’un DML_SLICE1_OPERATOR_DESC équivalent, cet opérateur produit un OutputGradientTensor avec les mêmes tailles que l’entrée de DML_SLICE1_OPERATOR_DESC. Les éléments segmentés sont propagés à la sortie et tous les autres éléments sont définis sur 0.
Prenons l’exemple d’un DML_SLICE1_OPERATOR_DESC qui extrait les éléments suivants d’un tenseur :
InputTensor OutputTensor
[[a, b, c, d],
[e, f, g, h], Slice [[a, c],
[i, j, k, l], --> [i, k]]
[m, n, o, p]]
S’il fournit les mêmes entrées InputWindowOffsets/Sizes Strides/ que dans l’exemple ci-dessus, cet opérateur effectue alors la transformation suivante.
InputGradientTensor OutputGradientTensor
[[a, 0, c, 0],
[[a, c], SliceGrad [0, 0, 0, 0],
[i, k]] --> [i, 0, k, 0],
[0, 0, 0, 0]]
Syntaxe
struct DML_SLICE_GRAD_OPERATOR_DESC {
const DML_TENSOR_DESC *InputGradientTensor;
const DML_TENSOR_DESC *OutputGradientTensor;
UINT DimensionCount;
const UINT *InputWindowOffsets;
const UINT *InputWindowSizes;
const INT *InputWindowStrides;
};
Membres
InputGradientTensor
Type : const DML_TENSOR_DESC*
Tenseur de gradient entrant. Cela est généralement obtenu à partir de la sortie de la rétropropagation d’une couche précédente. En règle générale, ce tenseur a les mêmes tailles que la sortie du DML_SLICE1_OPERATOR_DESC correspondant dans la passe avant.
OutputGradientTensor
Type : const DML_TENSOR_DESC*
Tenseur de sortie contenant les dégradés rétropropagés. En règle générale, ce tenseur a les mêmes tailles que l’entrée du DML_SLICE1_OPERATOR_DESC correspondant dans la passe avant.
DimensionCount
Type : UINT
Nombre d’éléments dans les tableaux InputWindowOffsets, InputWindowSizes et InputWindowStrides . Cette valeur doit être égale au DimensionCount fourni dans InputGradientTensor et OutputGradientTensor.
InputWindowOffsets
Type : _Field_size_(DimensionCount) const UINT*
Consultez InputWindowOffsets dans DML_SLICE1_OPERATOR_DESC.
InputWindowSizes
Type : _Field_size_(DimensionCount) const UINT*
Consultez InputWindowSizes dans DML_SLICE1_OPERATOR_DESC.
InputWindowStrides
Type : _Field_size_(DimensionCount) const UINT*
Consultez InputWindowStrides dans DML_SLICE1_OPERATOR_DESC.
Notez que contrairement à DML_SLICE1_OPERATOR_DESC, cet opérateur nécessite des foulées non nulles. En effet, avec une foulée nulle, il est ambigu quant à l’élément d’entrée qui doit être mappé à chaque élément de sortie et, par conséquent, la rétropropagation ne peut pas être effectuée. Comme DML_SLICE1_OPERATOR_DESC, les foulées négatives retournent la direction de la fenêtre d’entrée le long de cet axe.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_3_0
.
Contraintes tensoriels
InputGradientTensor et OutputGradientTensor doivent avoir les mêmes DataType et DimensionCount.
Prise en charge des tenseurs
DML_FEATURE_LEVEL_4_1 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputGradientTensor | Entrée | 1 à 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputGradientTensor | Sortie | 1 à 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_1 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputGradientTensor | Entrée | 1 à 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputGradientTensor | Sortie | 1 à 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, 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 |
---|---|---|---|
InputGradientTensor | Entrée | 4 à 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputGradientTensor | Sortie | 4 à 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 Build 20348 |
Serveur minimal pris en charge | Windows 10 Build 20348 |
En-tête | directml.h |