structure DML_LSTM_OPERATOR_DESC (directml.h)
Exécute une fonction de mémoire à court terme (LSTM) à une couche sur l’entrée. Cet opérateur utilise plusieurs portes pour effectuer cette couche. Ces portes sont effectuées plusieurs fois dans une boucle, dictées par la dimension de longueur de séquence et le SequenceLengthsTensor.
Équation de la direction vers l’avant
Équation pour la direction vers l’arrière
Légende d’équation
Syntaxe
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;
};
Membres
InputTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les données d’entrée, X. Empaqueté (et potentiellement rembourré) dans un tenseur 4D avec les tailles de { 1, seq_length, batch_size, input_size }
. seq_length est la dimension mappée à l’index, t. Le tenseur ne prend pas en charge l’indicateur DML_TENSOR_FLAG_OWNED_BY_DML .
WeightTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les données de pondération, W. Concaténation de W_[iofc] et W_B[iofc] (si bidirectionnel). Le tenseur a des { 1, num_directions, 4 * hidden_size, input_size }
tailles . Le tenseur ne prend pas en charge l’indicateur DML_TENSOR_FLAG_OWNED_BY_DML .
RecurrenceTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les données de périodicité, R. Concaténation de R_[iofc] et R_B[iofc] (si bidirectionnel). Ce tenseur a des { 1, num_directions, 4 * hidden_size, hidden_size }
tailles . Le tenseur ne prend pas en charge l’indicateur DML_TENSOR_FLAG_OWNED_BY_DML .
BiasTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Tenseur facultatif contenant les données de biais, B. Concaténation de { W_b[iofc], R_b[iofc] }
et { W_Bb[iofc], R_Bb[iofc] }
(si bidirectionnel). Ce tenseur a des { 1, 1, num_directions, 8 * hidden_size }
tailles . Si ce n’est pas spécifié, la valeur par défaut est 0 bias. Le tenseur ne prend pas en charge l’indicateur DML_TENSOR_FLAG_OWNED_BY_DML .
HiddenInitTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Tenseur facultatif contenant les données d’initialiseur de nœud masqué, H_(t-1). Le contenu de ce tenseur n’est utilisé que sur la première boucle index t. Si ce n’est pas spécifié, la valeur par défaut est 0. Ce tenseur a des { 1, num_directions, batch_size, hidden_size }
tailles . Le tenseur ne prend pas en charge l’indicateur DML_TENSOR_FLAG_OWNED_BY_DML .
CellMemInitTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Tenseur facultatif contenant les données d’initialiseur de cellule, C_(t-1). Le contenu de ce tenseur n’est utilisé que sur la première boucle index t. Si ce n’est pas spécifié, la valeur par défaut est 0. Ce tenseur a des { 1, num_directions, batch_size, hidden_size }
tailles . Le tenseur ne prend pas en charge l’indicateur DML_TENSOR_FLAG_OWNED_BY_DML .
SequenceLengthsTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Tenseur facultatif contenant un seq_length indépendant pour chaque élément du lot. Si elle n’est pas spécifiée, toutes les séquences du lot ont une longueur seq_length. Ce tenseur a des { 1, 1, 1, batch_size }
tailles . Le tenseur ne prend pas en charge l’indicateur DML_TENSOR_FLAG_OWNED_BY_DML .
PeepholeTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Tenseur facultatif contenant les données de poids pour les peepholes, P. Si ce n’est pas spécifié, la valeur par défaut est 0. Concaténation de P_[iof] et de P_B[iof] (si bidirectionnel). Ce tenseur a des { 1, 1, num_directions, 3 * hidden_size }
tailles . Le tenseur ne prend pas en charge l’indicateur DML_TENSOR_FLAG_OWNED_BY_DML .
OutputSequenceTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Tenseur facultatif avec lequel écrire la concaténation de toutes les valeurs de sortie intermédiaires des nœuds masqués, H_t. Ce tenseur a des { seq_length, num_directions, batch_size, hidden_size }
tailles . seq_length est mappé à l’index de boucle t.
OutputSingleTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Tenseur facultatif avec lequel écrire la dernière valeur de sortie des nœuds masqués, H_t. Ce tenseur a des { 1, num_directions, batch_size, hidden_size }
tailles .
OutputCellSingleTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Tenseur facultatif avec lequel écrire la dernière valeur de sortie de la cellule, C_t. Ce tenseur a des { 1, num_directions, batch_size, hidden_size }
tailles .
ActivationDescCount
Type : UINT
Ce champ détermine la taille du tableau ActivationDescs .
ActivationDescs
Type : _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC*
Tableau de DML_OPERATOR_DESC contenant les descriptions des opérateurs d’activation f(), g() et h(). f(), g() et h() sont définis indépendamment de la direction, ce qui signifie que si DML_RECURRENT_NETWORK_DIRECTION_FORWARD ou DML_RECURRENT_NETWORK_DIRECTION_BACKWARD sont fournis dans Direction, trois activations doivent être fournies. Si DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL est défini, six activations doivent être fournies. Pour les activations bidirectionnelles, les activations doivent être fournies f(), g() et h() pour l’avant, suivies de f(), g() et h() pour l’arrière.
Direction
Type : const DML_RECURRENT_NETWORK_DIRECTION*
Direction de l’opérateur : avant, arrière ou bidirectionnel.
ClipThreshold
Type : float
Seuil de clip de cellule. Le découpage limite les éléments d’un tenseur dans la plage de [-ClipThreshold
, +ClipThreshold
] et est appliqué à l’entrée des activations.
UseClipThreshold
Type : BOOL
TRUE si ClipThreshold doit être utilisé. Sinon, FALSE.
CoupleInputForget
Type : BOOL
TRUE si les portes d’entrée et d’oubli doivent être couplées. Sinon, FALSE.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_1_0
.
Contraintes tensoriels
BiasTensor, CellMemInitTensor, HiddenInitTensor, InputTensor, OutputCellSingleTensor, OutputSequenceTensor, OutputSingleTensor, PeepholeTensor, RecurrenceTensor et WeightTensor doivent avoir le même DataType.
Prise en charge de Tensor
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 4 | FLOAT32, FLOAT16 |
WeightTensor | Entrée | 4 | FLOAT32, FLOAT16 |
RecurrenceTensor | Entrée | 4 | FLOAT32, FLOAT16 |
BiasTensor | Entrée facultative | 4 | FLOAT32, FLOAT16 |
HiddenInitTensor | Entrée facultative | 4 | FLOAT32, FLOAT16 |
CellMemInitTensor | Entrée facultative | 4 | FLOAT32, FLOAT16 |
SequenceLengthsTensor | Entrée facultative | 4 | UINT32 |
PeepholeTensor | Entrée facultative | 4 | FLOAT32, FLOAT16 |
OutputSequenceTensor | Sortie facultative | 4 | FLOAT32, FLOAT16 |
OutputSingleTensor | Sortie facultative | 4 | FLOAT32, FLOAT16 |
OutputCellSingleTensor | Sortie facultative | 4 | FLOAT32, FLOAT16 |
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | directml.h |