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 in avanti

Equazione per la direzione indietro

equazione per la direzione indietro

Legenda equazione

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