struttura DML_LSTM_OPERATOR_DESC (directml.h)
Esegue una funzione LSTM (Long Short Term Memory) a un livello sull'input. Questo operatore usa più controlli per eseguire questo livello. Questi controlli vengono eseguiti più volte in un ciclo, dettati dalla dimensione della lunghezza della sequenza e da SequenceLengthsTensor.
Equazione per la direzione in avanti
Equazione per la direzione indietro
Legenda equazione
Sintassi
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;
};
Members
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_[iofc] e W_B[iofc] (se bidirezionale). Il tensore ha dimensioni { 1, num_directions, 4 * 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_[iofc] e R_B[iofc] (se bidirezionale). Questo tensore ha dimensioni { 1, num_directions, 4 * 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[iofc], R_b[iofc] }
e { W_Bb[iofc], R_Bb[iofc] }
(se bidirezionale). Questo tensore ha dimensioni { 1, 1, num_directions, 8 * hidden_size }
. Se non specificato, il valore predefinito è 0. Il tensore non supporta il flag DML_TENSOR_FLAG_OWNED_BY_DML .
HiddenInitTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensore facoltativo contenente i dati dell'inizializzatore del nodo nascosto, H_(t-1). Il contenuto di questo tensore viene usato solo nel primo indice del 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 .
CellMemInitTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensore facoltativo contenente i dati dell'inizializzatore di cella, C_(t-1). Il contenuto di questo tensore viene usato solo nel primo indice del 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 .
PeepholeTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensore facoltativo contenente i dati di peso per peepholes, P. Se non specificato, il valore predefinito è 0. Concatenazione di P_[iof] e P_B[iof] (se bidirezionale). Questo tensore ha dimensioni { 1, 1, num_directions, 3 * hidden_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 del 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 }
.
OutputCellSingleTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensore facoltativo con cui scrivere l'ultimo valore di output della cella C_t. Questo tensore ha dimensioni { 1, num_directions, batch_size, hidden_size }
.
ActivationDescCount
Tipo: UINT
Questo campo determina le dimensioni della matrice ActivationDescs .
ActivationDescs
Tipo: _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC*
Matrice di DML_OPERATOR_DESC contenente le descrizioni degli operatori di attivazione f(), g() e h(). f(), g() e h() sono definiti indipendentemente dalla direzione, ovvero se DML_RECURRENT_NETWORK_DIRECTION_FORWARD o DML_RECURRENT_NETWORK_DIRECTION_BACKWARD vengono forniti in Direzione, è necessario fornire tre attivazioni. Se DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL è definito, è necessario specificare sei attivazioni. Per le attivazioni bidirezionali, le attivazioni devono essere fornite f(), g() e h() per l'inoltro seguito da f(), g() e h() per le versioni precedenti.
Direction
Tipo: const DML_RECURRENT_NETWORK_DIRECTION*
Direzione dell'operatore: avanti, indietro o bidirezionale.
ClipThreshold
Tipo: float
Soglia di ritaglio della cella. Il ritaglio delimita gli elementi di un tensore nell'intervallo di [-ClipThreshold
, +ClipThreshold
], e viene applicato all'input delle attivazioni.
UseClipThreshold
Tipo: BOOL
TRUE se deve essere utilizzato ClipThreshold . In caso contrario, FALSE.
CoupleInputForget
Tipo: BOOL
TRUE se l'input e dimenticare i cancelli devono essere accoppiati. In caso contrario, FALSE.
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_1_0
.
Vincoli tensor
BiasTensor, CellMemInitTensor, HiddenInitTensor, InputTensor, OutputCellSingleTensor, OutputSequenceTensor, OutputSingleTensor, PeepholeTensor, RecurrenceTensor e WeightTensor devono avere lo stesso DataType.
Supporto di Tensor
Tensore | Tipo | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Input | 4 | FLOAT32, FLOAT16 |
WeightTensor | Input | 4 | FLOAT32, FLOAT16 |
RecurrenceTensor | Input | 4 | FLOAT32, FLOAT16 |
BiasTensor | Input facoltativo | 4 | FLOAT32, FLOAT16 |
HiddenInitTensor | Input facoltativo | 4 | FLOAT32, FLOAT16 |
CellMemInitTensor | Input facoltativo | 4 | FLOAT32, FLOAT16 |
SequenceLengthsTensor | Input facoltativo | 4 | UINT32 |
PeepholeTensor | Input facoltativo | 4 | FLOAT32, FLOAT16 |
OutputSequenceTensor | Output facoltativo | 4 | FLOAT32, FLOAT16 |
OutputSingleTensor | Output facoltativo | 4 | FLOAT32, FLOAT16 |
OutputCellSingleTensor | Output facoltativo | 4 | FLOAT32, FLOAT16 |
Requisiti
Requisito | Valore |
---|---|
Intestazione | directml.h |