Share via


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 a frente

Equação para a direção para trás

equação para a direção para trás

Legenda da equação

equação legenda

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