estrutura DML_LSTM_OPERATOR_DESC (directml.h)
Executa uma função LSTM (memória de curto prazo) de uma camada na entrada. Esse operador usa vários portões para executar essa camada. Esses portões são executados várias vezes em um loop, ditados pela dimensão de comprimento da sequência e pelo SequenceLengthsTensor.
Equação para a direção para a frente
Equação para a direção para trás
Legenda da equação
Sintaxe
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;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de entrada, X. Empacotado (e potencialmente acolchoado) em um tensor 4D com os tamanhos de { 1, seq_length, batch_size, input_size }
. seq_length é a dimensão mapeada para o índice, t. O tensor não dá suporte ao sinalizador DML_TENSOR_FLAG_OWNED_BY_DML .
WeightTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de peso, W. Concatenação de W_[iofc] e W_B[iofc] (se bidirecional). O tensor tem tamanhos { 1, num_directions, 4 * hidden_size, input_size }
. O tensor não dá suporte ao sinalizador DML_TENSOR_FLAG_OWNED_BY_DML .
RecurrenceTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de recorrência, R. Concatenação de R_[iofc] e R_B[iofc] (se bidirecional). Esse tensor tem tamanhos { 1, num_directions, 4 * hidden_size, hidden_size }
. O tensor não dá suporte ao sinalizador DML_TENSOR_FLAG_OWNED_BY_DML .
BiasTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados de desvio, B. Concatenação de { W_b[iofc], R_b[iofc] }
e { W_Bb[iofc], R_Bb[iofc] }
(se bidirecional). Esse tensor tem tamanhos { 1, 1, num_directions, 8 * hidden_size }
. Se não for especificado, o padrão será 0 bias. O tensor não dá suporte ao sinalizador DML_TENSOR_FLAG_OWNED_BY_DML .
HiddenInitTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados ocultos do inicializador de nó, H_(t-1). O conteúdo desse tensor só é usado no primeiro índice de loop t. Se não for especificado, o padrão será 0. Esse tensor tem tamanhos { 1, num_directions, batch_size, hidden_size }
. O tensor não dá suporte ao sinalizador DML_TENSOR_FLAG_OWNED_BY_DML .
CellMemInitTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados do inicializador de célula, C_(t-1). O conteúdo desse tensor só é usado no primeiro índice de loop t. Se não for especificado, o padrão será 0. Esse tensor tem tamanhos { 1, num_directions, batch_size, hidden_size }
. O tensor não dá suporte ao sinalizador DML_TENSOR_FLAG_OWNED_BY_DML .
SequenceLengthsTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém uma seq_length independente para cada elemento no lote. Se não for especificado, todas as sequências no lote terão comprimento seq_length. Esse tensor tem tamanhos { 1, 1, 1, batch_size }
. O tensor não dá suporte ao sinalizador DML_TENSOR_FLAG_OWNED_BY_DML .
PeepholeTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados de peso para peepholes, P. Se não for especificado, o padrão será 0. Concatenação de P_[iof] e P_B[iof] (se bidirecional). Esse tensor tem tamanhos { 1, 1, num_directions, 3 * hidden_size }
. O tensor não dá suporte ao sinalizador DML_TENSOR_FLAG_OWNED_BY_DML .
OutputSequenceTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional com o qual gravar a concatenação de todos os valores de saída intermediários dos nós ocultos, H_t. Esse tensor tem tamanhos { seq_length, num_directions, batch_size, hidden_size }
. seq_length é mapeado para o índice de loop t.
OutputSingleTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional com o qual gravar o último valor de saída dos nós ocultos H_t. Esse tensor tem tamanhos { 1, num_directions, batch_size, hidden_size }
.
OutputCellSingleTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional com o qual gravar o último valor de saída da célula, C_t. Esse tensor tem tamanhos { 1, num_directions, batch_size, hidden_size }
.
ActivationDescCount
Tipo: UINT
Esse campo determina o tamanho da matriz ActivationDescs .
ActivationDescs
Tipo: _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC*
Uma matriz de DML_OPERATOR_DESC que contém as descrições dos operadores de ativação f(), g() e h(). f(), g() e h() são definidos independentemente da direção, o que significa que, se DML_RECURRENT_NETWORK_DIRECTION_FORWARD ou DML_RECURRENT_NETWORK_DIRECTION_BACKWARD forem fornecidos em Direção, três ativações deverão ser fornecidas. Se DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL for definido, seis ativações deverão ser fornecidas. Para bidirecional, as ativações devem ser fornecidas f(), g() e h() para frente seguidas por f(), g() e h() para versões anteriores.
Direction
Tipo: const DML_RECURRENT_NETWORK_DIRECTION*
A direção do operador: para frente, para trás ou bidirecional.
ClipThreshold
Tipo: float
O limite de clipe de célula. O recorte associa os elementos de um tensor no intervalo de [-ClipThreshold
, +ClipThreshold
], e é aplicado à entrada de ativações.
UseClipThreshold
Tipo: BOOL
TRUE se ClipThreshold deve ser usado. Caso contrário, FALSE.
CoupleInputForget
Tipo: BOOL
TRUE se os portões de entrada e de esquecer devem ser acoplados. Caso contrário, FALSE.
Disponibilidade
Esse operador foi introduzido no DML_FEATURE_LEVEL_1_0
.
Restrições do Tensor
BiasTensor, CellMemInitTensor, HiddenInitTensor, InputTensor, OutputCellSingleTensor, OutputSequenceTensor, OutputSingleTensor, PeepholeTensor, RecurrenceTensor e WeightTensor devem ter o mesmo DataType.
Suporte ao Tensor
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16 |
WeightTensor | Entrada | 4 | FLOAT32, FLOAT16 |
RecurrenceTensor | Entrada | 4 | FLOAT32, FLOAT16 |
BiasTensor | Entrada opcional | 4 | FLOAT32, FLOAT16 |
HiddenInitTensor | Entrada opcional | 4 | FLOAT32, FLOAT16 |
CellMemInitTensor | Entrada opcional | 4 | FLOAT32, FLOAT16 |
SequenceLengthsTensor | Entrada opcional | 4 | UINT32 |
PeepholeTensor | Entrada opcional | 4 | FLOAT32, FLOAT16 |
OutputSequenceTensor | Saída opcional | 4 | FLOAT32, FLOAT16 |
OutputSingleTensor | Saída opcional | 4 | FLOAT32, FLOAT16 |
OutputCellSingleTensor | Saída opcional | 4 | FLOAT32, FLOAT16 |
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | directml.h |