Partager via


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’avant

Équation pour la direction vers l’arrière

équation pour la direction vers l’arrière

Légende d’équation

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