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 indietro
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
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
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 |