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 anterior
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
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
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 |