Compartilhar via


estrutura DML_GRU_OPERATOR_DESC (directml.h)

Executa uma função GRU (unidade recorrente) fechada de uma camada (camadas padrão) na entrada. Esse operador usa várias portas para executar essa camada. Essas portas são executadas várias vezes em um loop ditado 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

Equação para a direção anterior

equação para a direção anterior

Legenda da equação

legenda da equação

Sintaxe

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;
};

Membros

InputTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados de entrada, X. Packed (e potencialmente acolchoado) em um tensor 4D com o Sizes 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 de 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_[zrh] e W_B[zrh] (se bidirecional). O tensor tem tamanhos de { 1, num_directions, 3 * hidden_size, input_size }. O tensor não dá suporte ao sinalizador de 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_[zrh] e R_B[zrh] (se bidirecional). O tensor tem tamanhos de { 1, num_directions, 3 * hidden_size, hidden_size }. O tensor não dá suporte ao sinalizador de DML_TENSOR_FLAG_OWNED_BY_DML.

BiasTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Um tensor opcional que contém os dados de viés, B. Concatenação de (W_b[zrh], R_b[zrh]) e (W_Bb[zrh], R_Bb[zrh]) (se bidirecional). O tensor tem tamanhos de { 1, 1, num_directions, 6 * hidden_size }. O tensor não dá suporte ao sinalizador de DML_TENSOR_FLAG_OWNED_BY_DML.

HiddenInitTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Um tensor opcional que contém o tensor inicializador de nó oculto, H_t-1 para o 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 de 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 de 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 }.

ActivationDescCount

Tipo: UINT

Esse campo determina o tamanho da matriz de 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() e g(). F() e g() 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 Direction, duas ativações deverão ser fornecidas. Se DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL for fornecido, quatro ativações deverão ser fornecidas. Para bidirecional, as ativações devem ser fornecidas f() e g() para frente seguidas por f() e g() para versões anteriores.

Direction

Tipo: const DML_RECURRENT_NETWORK_DIRECTION*

A direção do operador – para frente, para trás ou bidirecional.

LinearBeforeReset

Tipo: BOOL

VERDADEIRO especificar que, ao calcular a saída da porta oculta, a transformação linear deve ser aplicada antes de multiplicar pela saída da porta de redefinição. Caso contrário, FALSE.

Disponibilidade

Este operador foi introduzido no DML_FEATURE_LEVEL_1_0.

Restrições do Tensor

BiasTensor, HiddenInitTensor, InputTensor, OutputSequenceTensor, OutputSingleTensor, RecurrenceTensore 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
SequenceLengthsTensor Entrada opcional 4 UINT32
OutputSequenceTensor Saída opcional 4 FLOAT32, FLOAT16
OutputSingleTensor Saída opcional 4 FLOAT32, FLOAT16

Requisitos

Requisito Valor
cabeçalho directml.h