Freigeben über


DML_GRU_OPERATOR_DESC Struktur (directml.h)

Führt eine (Standardebene) eine einschichtige Wiederkehrende Einheitsfunktion (GRU) für die Eingabe aus. Dieser Operator verwendet mehrere Tore, um diese Ebene auszuführen. Diese Tore werden mehrmals in einer Schleife ausgeführt, die von der Sequenzlängendimension und dem SequenceLengthsTensorbestimmt wird.

Formel für die Vorwärtsrichtung

Formel für die Vorwärtsrichtung

Formel für die Rückwärtsrichtung

Formel für die Rückwärtsrichtung

Formellegende

Formellegende

Syntax

struct DML_GRU_OPERATOR_DESC {
  const DML_TENSOR_DESC           *InputTensor;
  const DML_TENSOR_DESC           *WeightTensor;
  const DML_TENSOR_DESC           *RecurrenceTensor;
  const DML_TENSOR_DESC           *BiasTensor;
  const DML_TENSOR_DESC           *HiddenInitTensor;
  const DML_TENSOR_DESC           *SequenceLengthsTensor;
  const DML_TENSOR_DESC           *OutputSequenceTensor;
  const DML_TENSOR_DESC           *OutputSingleTensor;
  UINT                            ActivationDescCount;
  const DML_OPERATOR_DESC         *ActivationDescs;
  DML_RECURRENT_NETWORK_DIRECTION Direction;
  BOOL                            LinearBeforeReset;
};

Angehörige

InputTensor

Typ: DML_TENSOR_DESC*

Ein Tensor, der die Eingabedaten enthält, X. Verpackt (und potenziell aufgefüllt) in einen 4D-Tensor mit den Größen von { 1, seq_length, batch_size, input_size }. seq_length ist die Dimension, die dem Index zugeordnet ist, t. Der Tensor unterstützt das DML_TENSOR_FLAG_OWNED_BY_DML Flag nicht.

WeightTensor

Typ: DML_TENSOR_DESC*

Ein Tensor, der die Gewichtungsdaten enthält, W. Verkettung von W_[zrh] und W_B[zrh] (wenn bidirektional). Der Tensor hat Größen{ 1, num_directions, 3 * hidden_size, input_size }. Der Tensor unterstützt das DML_TENSOR_FLAG_OWNED_BY_DML Flag nicht.

RecurrenceTensor

Typ: DML_TENSOR_DESC*

Ein Tensor, der die Seriendaten enthält, R. Verkettung von R_[zrh] und R_B[zrh] (wenn bidirektional). Der Tensor hat Größen{ 1, num_directions, 3 * hidden_size, hidden_size }. Der Tensor unterstützt das DML_TENSOR_FLAG_OWNED_BY_DML Flag nicht.

BiasTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, der die Bias-Daten enthält, B. Verkettung von (W_b[zrh], R_b[zrh]) und (W_Bb[zrh], R_Bb[zrh]) (wenn bidirektional). Der Tensor hat Größen{ 1, 1, num_directions, 6 * hidden_size }. Der Tensor unterstützt das DML_TENSOR_FLAG_OWNED_BY_DML Flag nicht.

HiddenInitTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, der den ausgeblendeten Knoteninitialisierungs-Tensor enthält, H_t-1 für den ersten Schleifenindex t. Wenn nicht angegeben, wird standardmäßig "0" verwendet. Dieser Tensor hat Größen{ 1, num_directions, batch_size, hidden_size }. Der Tensor unterstützt das DML_TENSOR_FLAG_OWNED_BY_DML Flag nicht.

SequenceLengthsTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, der eine unabhängige seq_length für jedes Element im Batch enthält. Wenn nicht angegeben, weisen alle Sequenzen im Batch die Länge seq_length auf. Dieser Tensor hat Größen{ 1, 1, 1, batch_size }. Der Tensor unterstützt das DML_TENSOR_FLAG_OWNED_BY_DML Flag nicht.

OutputSequenceTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, mit dem die Verkettung aller Zwischenausgabewerte der ausgeblendeten Knoten H_t geschrieben werden soll. Dieser Tensor hat Größen{ seq_length, num_directions, batch_size, hidden_size }. seq_length wird dem Schleifenindex t zugeordnet.

OutputSingleTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, mit dem der letzte Ausgabewert der ausgeblendeten Knoten geschrieben werden soll, H_t. Dieser Tensor hat Größen{ 1, num_directions, batch_size, hidden_size }.

ActivationDescCount

Typ: UINT-

Dieses Feld bestimmt die Größe des ActivationDescs Arrays.

ActivationDescs

Typ: _Field_size_(ActivationDescCount) DML_OPERATOR_DESC*

Ein Array von DML_OPERATOR_DESC, das die Beschreibungen der Aktivierungsoperatoren, f() und g() enthält. Sowohl f() als auch g() werden unabhängig von der Richtung definiert, d. h., wenn DML_RECURRENT_NETWORK_DIRECTION_FORWARD oder DML_RECURRENT_NETWORK_DIRECTION_BACKWARD in Richtungangegeben werden, müssen zwei Aktivierungen bereitgestellt werden. Wenn DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL angegeben wird, müssen vier Aktivierungen bereitgestellt werden. Für bidirektionale Aktivierungen müssen f() und g() für vorwärts gefolgt von f() und g() für rückwärts bereitgestellt werden.

Direction

Typ: DML_RECURRENT_NETWORK_DIRECTION*

Die Richtung des Operators – vorwärts, rückwärts oder bidirektional.

LinearBeforeReset

Typ: BOOL-

TRUE anzugeben, dass beim Berechnen der Ausgabe des ausgeblendeten Gates die lineare Transformation angewendet werden sollte, bevor die Ausgabe des Rücksetzgates multipliziert wird. Andernfalls FALSE-.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_1_0eingeführt.

Tensoreinschränkungen

BiasTensor, HiddenInitTensor, InputTensor, OutputSequenceTensor,OutputSingleTensor, RecurrenceTensor-und WeightTensor- muss denselben Datentyphaben.

Tensorunterstützung

Tensor Art Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16
WeightTensor Eingabe 4 FLOAT32, FLOAT16
RecurrenceTensor Eingabe 4 FLOAT32, FLOAT16
BiasTensor Optionale Eingabe 4 FLOAT32, FLOAT16
HiddenInitTensor Optionale Eingabe 4 FLOAT32, FLOAT16
SequenceLengthsTensor Optionale Eingabe 4 UINT32
OutputSequenceTensor Optionale Ausgabe 4 FLOAT32, FLOAT16
OutputSingleTensor Optionale Ausgabe 4 FLOAT32, FLOAT16

Anforderungen

Anforderung Wert
Header- directml.h