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
Équation pour la direction vers l’arrière
équation
Légende de l’é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 |