Partager via


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