DML_GRU_OPERATOR_DESC-Struktur (directml.h)
Führt eine GRU-Funktion (Standardebene) mit einer Ebene aus. Dieser Operator verwendet mehrere Gates, um diese Ebene auszuführen. Diese Gates werden mehrmals in einer Schleife ausgeführt, die von der Sequenzlängendimension und dem SequenceLengthsTensor vorgegeben wird.
Formel für die Vorwärtsrichtung
Formel für die Rückwärtsrichtung
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;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor mit den Eingabedaten, X. Verpackt (und möglicherweise aufgefüllt) in einem 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 flag DML_TENSOR_FLAG_OWNED_BY_DML nicht.
WeightTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor mit den Gewichtungsdaten, 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 flag DML_TENSOR_FLAG_OWNED_BY_DML nicht.
RecurrenceTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Wiederholungsdaten 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 flag DML_TENSOR_FLAG_OWNED_BY_DML nicht.
BiasTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die Biasdaten 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 flag DML_TENSOR_FLAG_OWNED_BY_DML nicht.
HiddenInitTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der den ausgeblendeten Knoteninitialisierer tensor enthält, H_t-1 für den ersten Schleifenindex t. Wenn nicht angegeben, ist der Standardwert 0. Dieser Tensor hat Größen{ 1, num_directions, batch_size, hidden_size }
. Der Tensor unterstützt das flag DML_TENSOR_FLAG_OWNED_BY_DML 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, haben alle Sequenzen im Batch die Länge seq_length. Dieser Tensor hat Größen{ 1, 1, 1, batch_size }
. Der Tensor unterstützt das flag DML_TENSOR_FLAG_OWNED_BY_DML nicht.
OutputSequenceTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, mit dem die Verkettung aller Zwischenausgabewerte der ausgeblendeten Knoten geschrieben H_t. 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 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) const 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 Richtung angegeben 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: const DML_RECURRENT_NETWORK_DIRECTION*
Die Richtung des Operators – vorwärts, rückwärts oder bidirektional.
LinearBeforeReset
Typ: BOOL
TRUE , um anzugeben, dass beim Berechnen der Ausgabe des ausgeblendeten Gates die lineare Transformation angewendet werden soll, bevor sie mit der Ausgabe des Zurücksetzungsgates multipliziert wird. Andernfalls FALSE.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_1_0
eingeführt.
Tensoreinschränkungen
BiasTensor, HiddenInitTensor, InputTensor, OutputSequenceTensor, OutputSingleTensor, RecurrenceTensor und WeightTensor müssen denselben Datentyp aufweisen.
Tensorunterstützung
Tensor | Variante | 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 |
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für