Share via


DML_MAX_POOLING_GRAD_OPERATOR_DESC-Struktur (directml.h)

Berechnet backpropagation gradients for max pooling (siehe DML_MAX_POOLING2_OPERATOR_DESC).

Stellen Sie sich einen 2x2-DML_MAX_POOLING2_OPERATOR_DESC ohne Auffüllung oder Erweiterung und einen Schritt von 1 vor, der folgendes ausführt.

InputTensor             OutputTensor    IndicesTensor
[[1, 2, 3],   MaxPool    [[4, 4],        [[4, 4],
 [2, 4, 2],     -->       [6, 7]]         [7, 8]]
 [5, 6, 7]]

Das größte Element jedes 2x2-Fensters im Eingabe tensor erzeugt ein Element der Ausgabe. Im Folgenden finden Sie ein Beispiel für die Ausgabe von DML_MAX_POOLING_GRAD_OPERATOR_DESC mit ähnlichen Parametern.

InputTensor   InputGradientTensor            OutputGradientTensor
[[1, 2, 3],       [[1, 2],     MaxPoolGrad   [[0, 0, 0],
 [2, 4, 2],        [4, 5]]         -->        [0, 3, 0],
 [5, 6, 7]]                                   [0, 4, 5]]

Tatsächlich verwendet dieser Operator den InputTensor , um den Index des größten Elements aus jedem Fenster zu bestimmen, und verteilt die Werte von InputGradientTensor auf der Grundlage dieser Indizes in den OutputGradientTensor . Wenn sich Indizes überschneiden, werden die Werte summiert. Alle nicht referenzierten Ausgabeelemente werden auf null gesetzt.

Im Fall einer Verknüpfung (bei der mehrere Elemente in einem Fenster den gleichen Maximalwert haben), wird das Element mit dem niedrigsten Index des logischen Elements ausgewählt.

Syntax

struct DML_MAX_POOLING_GRAD_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *InputGradientTensor;
  const DML_TENSOR_DESC *OutputGradientTensor;
  UINT                  DimensionCount;
  const UINT            *Strides;
  const UINT            *WindowSize;
  const UINT            *StartPadding;
  const UINT            *EndPadding;
  const UINT            *Dilations;
};

Member

InputTensor

Typ: const DML_TENSOR_DESC*

Der Tensor des Eingabefeatures. Dies ist in der Regel derselbe Tensor, der wie der InputTensor bereitgestellt wurde, um im Vorwärtsdurchlauf DML_MAX_POOLING2_OPERATOR_DESC .

InputGradientTensor

Typ: const DML_TENSOR_DESC*

Der eingehende Gradienten tensor. Dies wird in der Regel aus der Ausgabe der Backpropagation einer vorangehenden Ebene abgerufen. In der Regel hat dieser Tensor die gleichen Größen wie die Ausgabe des entsprechenden DML_MAX_POOLING2_OPERATOR_DESC im Vorwärtsdurchlauf.

OutputGradientTensor

Typ: const DML_TENSOR_DESC*

Ein Ausgabe tensor, der die umgekehrten Farbverläufe enthält. In der Regel hat dieser Tensor die gleichen Größen wie die Eingabe des entsprechenden DML_MAX_POOLING2_OPERATOR_DESC im Vorwärtsdurchlauf.

DimensionCount

Typ: UINT

Die Anzahl der Elemente in den Arrays Strides, WindowSize, StartPadding, EndPadding und Dilations . Dieser Wert muss der Anzahl räumlicher Dimensionen entsprechen (DimensionCount von InputTensor – 2). Da dieser Operator nur 4D-Tensoren unterstützt, ist der einzige gültige Wert für diesen Parameter 2.

Strides

Typ: _Field_size_(DimensionCount) const UINT*

Weitere Informationen finden Sie unter Strides in DML_MAX_POOLING2_OPERATOR_DESC.

WindowSize

Typ: _Field_size_(DimensionCount) const UINT*

Weitere Informationen finden Sie unter WindowSize in DML_MAX_POOLING2_OPERATOR_DESC.

StartPadding

Typ: _Field_size_(DimensionCount) const UINT*

Siehe StartPadding in DML_MAX_POOLING2_OPERATOR_DESC.

EndPadding

Typ: _Field_size_(DimensionCount) const UINT*

Weitere Informationen finden Sie unter EndPadding in DML_MAX_POOLING2_OPERATOR_DESC.

Dilations

Typ: _Field_size_(DimensionCount) const UINT*

Weitere Informationen finden Sie unter Dilations in DML_MAX_POOLING2_OPERATOR_DESC.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_3_0eingeführt.

Tensoreinschränkungen

  • InputGradientTensor, InputTensor und OutputGradientTensor müssen denselben DataType und DimensionCount aufweisen.
  • InputTensor und OutputGradientTensor müssen die gleichen Größen aufweisen.

Tensorunterstützung

DML_FEATURE_LEVEL_4_0 und höher

Tensor Typ Dimensionen Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } 4 bis 5 FLOAT32, FLOAT16
InputGradientTensor Eingabe { BatchCount, ChannelCount, [OutputDepth], OutputHeight, OutputWidth } 4 bis 5 FLOAT32, FLOAT16
OutputGradientTensor Ausgabe { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } 4 bis 5 FLOAT32, FLOAT16

DML_FEATURE_LEVEL_3_0 und höher

Tensor Typ Dimensionen Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe { BatchCount, ChannelCount, InputHeight, InputWidth } 4 FLOAT32, FLOAT16
InputGradientTensor Eingabe { BatchCount, ChannelCount, OutputHeight, OutputWidth } 4 FLOAT32, FLOAT16
OutputGradientTensor Ausgabe { BatchCount, ChannelCount, InputHeight, InputWidth } 4 FLOAT32, FLOAT16

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 10 Build 20348
Unterstützte Mindestversion (Server) Windows 10 Build 20348
Kopfzeile directml.h