Partager via


structure DML_GRU_OPERATOR_DESC (directml.h)

Effectue une fonction d’unité récurrente (GRU) à couche unique (couches standard) 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ée par la dimension de longueur de séquence et la SequenceLengthsTensor.

Équation pour la direction vers l’avant

équation pour la direction vers l’avant

Équation pour la direction vers l’arrière

équation pour la direction descendante

Légende de l’équation

légende d’équation

Syntaxe

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;
};

Membres

InputTensor

Type : const DML_TENSOR_DESC*

Un capteur contenant les données d’entrée, X. Packed (et potentiellement rembourré) en un tensoriel 4D avec les tailles de de { 1, seq_length, batch_size, input_size }. seq_length est la dimension mappée à l’index, t. Le tensoriel ne prend pas en charge l’indicateur de DML_TENSOR_FLAG_OWNED_BY_DML.

WeightTensor

Type : const DML_TENSOR_DESC*

Un tensor contenant les données de poids, W. Concaténation de W_[zrh] et W_B[zrh] (si bidirectionnel). Le capteur a Tailles{ 1, num_directions, 3 * hidden_size, input_size }. Le tensoriel ne prend pas en charge l’indicateur de DML_TENSOR_FLAG_OWNED_BY_DML.

RecurrenceTensor

Type : const DML_TENSOR_DESC*

Ensor contenant les données de périodicité, R. Concaténation de R_[zrh] et R_B[zrh] (si bidirectionnel). Le capteur a Tailles{ 1, num_directions, 3 * hidden_size, hidden_size }. Le tensoriel ne prend pas en charge l’indicateur de DML_TENSOR_FLAG_OWNED_BY_DML.

BiasTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un capteur facultatif contenant les données de biais, B. Concaténation de (W_b[zrh], R_b[zrh]) et (W_Bb[zrh], R_Bb[zrh]) (si bidirectionnel). Le capteur a Tailles{ 1, 1, num_directions, 6 * hidden_size }. Le tensoriel ne prend pas en charge l’indicateur de DML_TENSOR_FLAG_OWNED_BY_DML.

HiddenInitTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un capteur facultatif contenant le capteur d’initialiseur de nœud masqué, H_t-1 pour le premier index de boucle t. Si ce n’est pas spécifié, la valeur par défaut est 0. Ce capteur a tailles{ 1, num_directions, batch_size, hidden_size }. Le tensoriel ne prend pas en charge l’indicateur de DML_TENSOR_FLAG_OWNED_BY_DML.

SequenceLengthsTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un capteur facultatif contenant une seq_length indépendante pour chaque élément du lot. S’il n’est pas spécifié, toutes les séquences du lot ont une longueur seq_length. Ce capteur a tailles{ 1, 1, 1, batch_size }. Le tensoriel ne prend pas en charge l’indicateur de DML_TENSOR_FLAG_OWNED_BY_DML.

OutputSequenceTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un capteur facultatif avec lequel écrire la concaténation de toutes les valeurs de sortie intermédiaires des nœuds masqués, H_t. Ce capteur a tailles{ seq_length, num_directions, batch_size, hidden_size }. seq_length est mappé à l’index de boucle t.

OutputSingleTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un capteur facultatif avec lequel écrire la dernière valeur de sortie des nœuds masqués, H_t. Ce capteur a tailles{ 1, num_directions, batch_size, hidden_size }.

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() et g(). F() et g() 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, deux activations doivent être fournies. Si DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL est fourni, quatre activations doivent être fournies. Pour les activations bidirectionnelles, les activations doivent être fournies f() et g() pour le transfert suivi de f() et de g() pour les arrières.

Direction

Type : const DML_RECURRENT_NETWORK_DIRECTION*

Direction de l’opérateur : avant, arrière ou bidirectionnel.

LinearBeforeReset

Type : BOOL

TRUE pour spécifier que, lors du calcul de la sortie de la porte masquée, la transformation linéaire doit être appliquée avant de multiplier par la sortie de la porte de réinitialisation. Sinon, FALSE.

Disponibilité

Cet opérateur a été introduit dans DML_FEATURE_LEVEL_1_0.

Contraintes Tensor

BiasTensor, HiddenInitTensor, InputTensor, OutputSequenceTensor, OutputSingleTensor, RecurrenceTensoret WeightTensor doit avoir le même DataType.

Prise en charge de Tensor

Tenseur Gentil Nombres 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
SequenceLengthsTensor Entrée facultative 4 UINT32
OutputSequenceTensor Sortie facultative 4 FLOAT32, FLOAT16
OutputSingleTensor Sortie facultative 4 FLOAT32, FLOAT16

Exigences

Exigence Valeur
d’en-tête directml.h