Condividi tramite


struttura DML_GRU_OPERATOR_DESC (directml.h)

Esegue una funzione di unità ricorrente (GRU) a un livello standard sull'input. Questo operatore usa più controlli per eseguire questo livello. Questi controlli vengono eseguiti più volte in un ciclo determinato dalla dimensione della lunghezza della sequenza e dalla SequenceLengthsTensor.

Equazione per la direzione in avanti

equazione per la direzione in avanti

Equazione per la direzione indietro

equazione per la direzione indietro

Legenda equazione

legenda equazione

Sintassi

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

Membri

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensore contenente i dati di input, X. Compresso (e potenzialmente riempito) in un tensore 4D con le dimensioni di { 1, seq_length, batch_size, input_size }. seq_length è la dimensione mappata all'indice t. Il tensore non supporta il flag DML_TENSOR_FLAG_OWNED_BY_DML.

WeightTensor

Tipo: const DML_TENSOR_DESC*

Tensore contenente i dati di peso, W. Concatenazione di W_[zrh] e W_B[zrh] (se bidirezionale). Il tensore ha dimensioni { 1, num_directions, 3 * hidden_size, input_size }. Il tensore non supporta il flag DML_TENSOR_FLAG_OWNED_BY_DML.

RecurrenceTensor

Tipo: const DML_TENSOR_DESC*

Tensore contenente i dati di ricorrenza, R. Concatenazione di R_[zrh] e R_B[zrh] (se bidirezionale). Il tensore ha dimensioni { 1, num_directions, 3 * hidden_size, hidden_size }. Il tensore non supporta il flag DML_TENSOR_FLAG_OWNED_BY_DML.

BiasTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensore facoltativo contenente i dati di distorsione, B. Concatenazione di (W_b[zrh], R_b[zrh]) e (W_Bb[zrh], R_Bb[zrh]) (se bidirezionale). Il tensore ha dimensioni { 1, 1, num_directions, 6 * hidden_size }. Il tensore non supporta il flag DML_TENSOR_FLAG_OWNED_BY_DML.

HiddenInitTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensore facoltativo contenente il tensore di inizializzatore di nodo nascosto, H_t-1 per il primo indice ciclo t. Se non specificato, il valore predefinito è 0. Questo tensore ha dimensioni { 1, num_directions, batch_size, hidden_size }. Il tensore non supporta il flag DML_TENSOR_FLAG_OWNED_BY_DML.

SequenceLengthsTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensore facoltativo contenente un seq_length indipendente per ogni elemento del batch. Se non specificato, tutte le sequenze nel batch hanno lunghezza seq_length. Questo tensore ha dimensioni { 1, 1, 1, batch_size }. Il tensore non supporta il flag DML_TENSOR_FLAG_OWNED_BY_DML.

OutputSequenceTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensore facoltativo con cui scrivere la concatenazione di tutti i valori di output intermedi dei nodi nascosti, H_t. Questo tensore ha dimensioni { seq_length, num_directions, batch_size, hidden_size }. seq_length viene eseguito il mapping all'indice ciclo t.

OutputSingleTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensore facoltativo con cui scrivere l'ultimo valore di output dei nodi nascosti H_t. Questo tensore ha dimensioni { 1, num_directions, batch_size, hidden_size }.

ActivationDescCount

Tipo: UINT

Questo campo determina le dimensioni della matrice di ActivationDescs .

ActivationDescs

Tipo: _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC*

Matrice di DML_OPERATOR_DESC contenente le descrizioni degli operatori di attivazione, f() e g(). Sia f() che g() sono definiti indipendentemente dalla direzione, ovvero se DML_RECURRENT_NETWORK_DIRECTION_FORWARD o DML_RECURRENT_NETWORK_DIRECTION_BACKWARD vengono forniti in Direzione, è necessario specificare due attivazioni. Se viene fornito DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL, è necessario fornire quattro attivazioni. Per le attivazioni bidirezionali, è necessario specificare f() e g() per l'inoltro seguito da f() e g() per le versioni precedenti.

Direction

Tipo: DML_RECURRENT_NETWORK_DIRECTION* const

Direzione dell'operatore, avanti, indietro o bidirezionale.

LinearBeforeReset

Tipo: BOOL

TRUE per specificare che, quando si calcola l'output del gate nascosto, la trasformazione lineare deve essere applicata prima di moltiplicare per l'output del controllo di reimpostazione. In caso contrario, FALSE.

Disponibilità

Questo operatore è stato introdotto in DML_FEATURE_LEVEL_1_0.

Vincoli tensor

BiasTensor, HiddenInitTensor, InputTensor, OutputSequenceTensor, OutputSingleTensor, RecurrenceTensore WeightTensor devono avere lo stesso DataType.

Supporto tensor

Tensore Gentile Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Immissione 4 FLOAT32, FLOAT16
WeightTensor Immissione 4 FLOAT32, FLOAT16
RecurrenceTensor Immissione 4 FLOAT32, FLOAT16
BiasTensor Input facoltativo 4 FLOAT32, FLOAT16
HiddenInitTensor Input facoltativo 4 FLOAT32, FLOAT16
SequenceLengthsTensor Input facoltativo 4 UINT32
OutputSequenceTensor Output facoltativo 4 FLOAT32, FLOAT16
OutputSingleTensor Output facoltativo 4 FLOAT32, FLOAT16

Fabbisogno

Requisito Valore
intestazione directml.h