DML_LSTM_OPERATOR_DESC-Struktur (directml.h)
Führt eine einschichtige LSTM-Funktion (Long Short Term Memory) für die Eingabe 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 diktiert werden.
Formel für die Vorwärtsrichtung
Formel für die Rückwärtsrichtung
Formellegende
Syntax
struct DML_LSTM_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 *CellMemInitTensor;
const DML_TENSOR_DESC *SequenceLengthsTensor;
const DML_TENSOR_DESC *PeepholeTensor;
const DML_TENSOR_DESC *OutputSequenceTensor;
const DML_TENSOR_DESC *OutputSingleTensor;
const DML_TENSOR_DESC *OutputCellSingleTensor;
UINT ActivationDescCount;
const DML_OPERATOR_DESC *ActivationDescs;
DML_RECURRENT_NETWORK_DIRECTION Direction;
float ClipThreshold;
BOOL UseClipThreshold;
BOOL CoupleInputForget;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Eingabedaten enthält, X. Verpackt (und möglicherweise gepolstert) 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: const DML_TENSOR_DESC*
Ein Tensor, der die Gewichtungsdaten enthält, W. Verkettung von W_[iofc] und W_B[iofc] (wenn bidirektional). Der Tensor hat die Größen { 1, num_directions, 4 * hidden_size, input_size }
. Der Tensor unterstützt das DML_TENSOR_FLAG_OWNED_BY_DML-Flag nicht.
RecurrenceTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor mit den Wiederholungsdaten, R. Verkettung von R_[iofc] und R_B[iofc] (wenn bidirektional). Dieser Tensor hat die Größen { 1, num_directions, 4 * 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 mit den Biasdaten, B. Verkettung von { W_b[iofc], R_b[iofc] }
und { W_Bb[iofc], R_Bb[iofc] }
(wenn bidirektional). Dieser Tensor hat die Größen { 1, 1, num_directions, 8 * hidden_size }
. Wenn nicht angegeben, wird standardmäßig 0 Bias festgelegt. Der Tensor unterstützt das DML_TENSOR_FLAG_OWNED_BY_DML-Flag nicht.
HiddenInitTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die ausgeblendeten Knoteninitialisiererdaten enthält, H_(t-1). Der Inhalt dieses Tensors wird nur für den ersten Schleifenindex t verwendet. Wenn nicht angegeben, wird standardmäßig 0 angegeben. Dieser Tensor hat die Größen { 1, num_directions, batch_size, hidden_size }
. Der Tensor unterstützt das DML_TENSOR_FLAG_OWNED_BY_DML-Flag nicht.
CellMemInitTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die Zellinitialisiererdaten enthält, C_(t-1). Der Inhalt dieses Tensors wird nur für den ersten Schleifenindex t verwendet. Wenn nicht angegeben, wird standardmäßig 0 angegeben. Dieser Tensor hat die 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, haben alle Sequenzen im Batch die Länge seq_length. Dieser Tensor hat die Größen { 1, 1, 1, batch_size }
. Der Tensor unterstützt das DML_TENSOR_FLAG_OWNED_BY_DML-Flag nicht.
PeepholeTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die Gewichtungsdaten für Gucklöcher enthält, P. Wenn nicht angegeben, wird standardmäßig 0 angegeben. Verkettung von P_[iof] und P_B[iof] (wenn bidirektional). Dieser Tensor hat die Größen { 1, 1, num_directions, 3 * hidden_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 geschrieben werden soll, H_t. Dieser Tensor hat die 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 die Größen { 1, num_directions, batch_size, hidden_size }
.
OutputCellSingleTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, mit dem der letzte Ausgabewert der Zelle geschrieben werden soll, C_t. Dieser Tensor hat die 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(), g() und h() enthält. f(), g() und h() werden unabhängig von der Richtung definiert, was bedeutet, dass drei Aktivierungen bereitgestellt werden müssen, wenn DML_RECURRENT_NETWORK_DIRECTION_FORWARD oder DML_RECURRENT_NETWORK_DIRECTION_BACKWARD in Richtung angegeben werden. Wenn DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL definiert ist, müssen sechs Aktivierungen bereitgestellt werden. Für bidirektionale Aktivierungen müssen f(), g() und h() für vorwärts angegeben werden, gefolgt von f(), g() und h() für rückwärts.
Direction
Typ: const DML_RECURRENT_NETWORK_DIRECTION*
Die Richtung des Operators: vorwärts, rückwärts oder bidirektional.
ClipThreshold
Typ: float
Der Schwellenwert für den Zellclip. Das Clipping begrenzt die Elemente eines Tensors im Bereich von [-ClipThreshold
, +ClipThreshold
] und wird auf die Eingabe von Aktivierungen angewendet.
UseClipThreshold
Typ: BOOL
TRUE , wenn ClipThreshold verwendet werden soll. Andernfalls FALSE.
CoupleInputForget
Typ: BOOL
TRUE , wenn die Eingabe- und Vergessengates gekoppelt sein sollen. Andernfalls FALSE.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_1_0
eingeführt.
Tensoreinschränkungen
BiasTensor, CellMemInitTensor, HiddenInitTensor, InputTensor, OutputCellSingleTensor, OutputSequenceTensor, OutputSingleTensor, PeepholeTensor, 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 |
CellMemInitTensor | Optionale Eingabe | 4 | FLOAT32, FLOAT16 |
SequenceLengthsTensor | Optionale Eingabe | 4 | UINT32 |
PeepholeTensor | Optionale Eingabe | 4 | FLOAT32, FLOAT16 |
OutputSequenceTensor | Optionale Ausgabe | 4 | FLOAT32, FLOAT16 |
OutputSingleTensor | Optionale Ausgabe | 4 | FLOAT32, FLOAT16 |
OutputCellSingleTensor | Optionale Ausgabe | 4 | FLOAT32, FLOAT16 |
Anforderungen
Anforderung | Wert |
---|---|
Header | directml.h |