Partager via


Structure DML_RESAMPLE_GRAD1_OPERATOR_DESC (directml.h)

Calcule les gradients de rétropropagation pour DML_RESAMPLE2_OPERATOR_DESC.

DML_RESAMPLE2_OPERATOR_DESC redimensionne les dimensions arbitraires du tenseur d’entrée à l’aide de l’échantillonnage le plus proche voisin ou de l’interpolation bilinéaire. Si l’on a un InputGradientTensor avec les mêmes tailles que la sortie d’un DML_RESAMPLE2_OPERATOR_DESC équivalent, cet opérateur produit alors un OutputGradientTensor avec les mêmes tailles que l’entrée du DML_RESAMPLE2_OPERATOR_DESC.

Prenons l’exemple d’un DML_RESAMPLE2_OPERATOR_DESC qui effectue une mise à l’échelle du plus proche voisin 1,5x dans la largeur et 0,5x dans la hauteur :

InputTensor           OutputTensor
[[1, 2],   Resample    [1, 1, 2]
 [3, 4]]      -->      

Notez comment le 0e élément du tenseur d’entrée (avec la valeur 1) contribue à deux éléments dans la sortie ; le 1er élément (avec la valeur 2) contribue à un élément dans la sortie ; et les 2e et 3e éléments (avec les valeurs 3 et 4) ne contribuent à aucun élément de la sortie.

Les DML_RESAMPLE_GRAD1_OPERATOR_DESC correspondantes effectuent les opérations suivantes :

InputGradientTensor           OutputGradientTensor
    [4, 5, 6]      ResampleGrad    [[9, 6],
                       -->          [0, 0]]

Notez que les valeurs de OutputGradientTensor représentent les contributions pondérées de cet élément à l’opérateur OutputTensor pendant l’opérateur de DML_RESAMPLE2_OPERATOR_DESC d’origine.

Important

Cette API est disponible dans le cadre du package redistribuable autonome DirectML (voir Microsoft.AI.DirectML version 1.9 et ultérieures). Consultez également l’historique des versions DirectML.

Syntaxe

struct DML_RESAMPLE_GRAD1_OPERATOR_DESC
{
    const DML_TENSOR_DESC* InputGradientTensor;
    const DML_TENSOR_DESC* OutputGradientTensor;
    DML_INTERPOLATION_MODE InterpolationMode;
    DML_AXIS_DIRECTION RoundingDirection;
    UINT DimensionCount;
    _Field_size_(DimensionCount) const FLOAT* Scales;
    _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
    _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
};

Membres

InputGradientTensor

Type : const DML_TENSOR_DESC*

Tenseur de gradient entrant. Cela est généralement obtenu à partir de la sortie de rétropropagation d’une couche précédente. En règle générale, ce tenseur aurait les mêmes tailles que la sortie de la DML_RESAMPLE2_OPERATOR_DESC correspondante dans le passage avant.

OutputGradientTensor

Type : const DML_TENSOR_DESC*

Un tenseur de sortie contenant les gradients rétropropagés. En règle générale, ce tenseur aurait les mêmes tailles que l’entrée de la DML_RESAMPLE2_OPERATOR_DESC correspondante dans le passage avant.

InterpolationMode

Type : DML_INTERPOLATION_MODE

Consultez DML_RESAMPLE2_OPERATOR_DESC::InterpolationMode.

RoundingDirection

Type : DML_AXIS_DIRECTION

Consultez DML_RESAMPLE2_OPERATOR_DESC::RoundingDirection.

DimensionCount

Type : UINT

Nombre d’éléments dans les tableaux Scales, InputPixelOffsets et OutputPixelOffsets. Cette valeur doit être égale à la valeur DimensionCount fournie dans InputGradientTensor et OutputGradientTensor.

Scales

Type : _Field_size_(DimensionCount) const FLOAT*

Consultez DML_RESAMPLE2_OPERATOR_DESC::Scales.

InputPixelOffsets

Type : _Field_size_(DimensionCount) const FLOAT*

Consultez DML_RESAMPLE2_OPERATOR_DESC::InputPixelOffsets.

OutputPixelOffsets

Type : _Field_size_(DimensionCount) const FLOAT*

Consultez DML_RESAMPLE2_OPERATOR_DESC::OutputPixelOffsets.

Notes

Cet opérateur équivaut à DML_RESAMPLE_GRAD_OPERATOR_DESC lorsque InterpolationMode est défini sur DML_INTERPOLATION_MODE_LINEAR, ou lorsque InterpolationMode est défini sur DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR et RoundingDirection sur DML_AXIS_DIRECTION_DECREASING et OutputPixelOffsets sont ajustés avec une valeur supplémentaire -0,5.

Disponibilité

Cet opérateur a été introduit dans DML_FEATURE_LEVEL_5_1.

Contraintes de tenseur

InputGradientTensor et OutputGradientTensor doivent avoir le même DataType et le même DimensionCount.

Prise en charge des tenseurs

Tenseur Genre Nombre de dimensions pris en charge Types de données pris en charge
InputGradientTensor Input 1 à 4 FLOAT32, FLOAT16
OutputGradientTensor Sortie 1 à 4 FLOAT32, FLOAT16

Spécifications

   
En-tête directml.h