estrutura DML_RNN_OPERATOR_DESC (directml.h)
Executa uma função RNN (rede neural recorrente) simples de uma camada na entrada. Essa função geralmente é conhecida como Porta de Entrada. Esse operador executa essa função 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 para trás
Legenda da equação
Sintaxe
struct DML_RNN_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;
};
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_i e W_Bi (se bidirecional). O tensor tem tamanhos { 1, num_directions, 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 opcional que contém os dados de peso de recorrência, R. Concatenação de R_i e R_Bi (se bidirecional). Esse tensor tem tamanhos { 1, num_directions, 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 para o portão de entrada, B. Concatenação de { W_bi, R_bi }
e { W_Bbi, R_Bbi }
(se bidirecional). Esse tensor tem tamanhos { 1, 1, num_directions, 2 * hidden_size }
. Se não for especificado, o padrão será 0. 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 o tensor do 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 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 .
OutputSequenceTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional com o qual gravar a concatenação de todos os valores de saída de camada intermediária 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 valor de saída final 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 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(). O número de funções de ativação é igual ao número de direções. Para direções para frente e para trás, espera-se que haja uma função de ativação. Para Bidirecional, espera-se que haja 2.
Direction
Tipo: DML_RECURRENT_NETWORK_DIRECTION
A direção do operador: para frente, para trás ou bidirecional.
Disponibilidade
Esse operador foi introduzido no DML_FEATURE_LEVEL_1_0
.
Restrições do Tensor
BiasTensor, HiddenInitTensor
, InputTensor, OutputSequenceTensor
, OutputSingleTensor
, 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 |
SequenceLengthsTensor | Entrada opcional | 4 | UINT32 |
OutputSequenceTensor | Saída opcional | 4 | FLOAT32, FLOAT16 |
OutputSingleTensor | Saída opcional | 4 | FLOAT32, FLOAT16 |
Requisitos
Cabeçalho | directml.h |