Compartir a través de


estructura DML_LSTM_OPERATOR_DESC (directml.h)

Realiza una función de memoria a corto plazo (LSTM) de una capa en la entrada. Este operador usa varias puertas para realizar esta capa. Estas puertas se realizan varias veces en un bucle, dictados por la dimensión de longitud de secuencia y SequenceLengthsTensor.

Ecuación para la dirección hacia delante

ecuación para la dirección hacia delante

Ecuación para la dirección hacia atrás

ecuación para la dirección hacia atrás

Leyenda de ecuación

leyenda de ecuación

Sintaxis

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

Miembros

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de entrada, X. Empaquetado (y potencialmente rellenado) en un tensor 4D con los tamaños de { 1, seq_length, batch_size, input_size }. seq_length es la dimensión asignada al índice, t. El tensor no admite la marca de DML_TENSOR_FLAG_OWNED_BY_DML .

WeightTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de peso, W. Concatenación de W_[iofc] y W_B[iofc] (si es bidireccional). El tensor tiene tamaños { 1, num_directions, 4 * hidden_size, input_size }. El tensor no admite la marca de DML_TENSOR_FLAG_OWNED_BY_DML .

RecurrenceTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de periodicidad, R. Concatenación de R_[iofc] y R_B[iofc] (si es bidireccional). Este tensor tiene tamaños { 1, num_directions, 4 * hidden_size, hidden_size }. El tensor no admite la marca de DML_TENSOR_FLAG_OWNED_BY_DML .

BiasTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional que contiene los datos de sesgo, B. Concatenación de { W_b[iofc], R_b[iofc] }y { W_Bb[iofc], R_Bb[iofc] } (si bidireccional). Este tensor tiene tamaños { 1, 1, num_directions, 8 * hidden_size }. Si no se especifica, el valor predeterminado es 0. El tensor no admite la marca de DML_TENSOR_FLAG_OWNED_BY_DML .

HiddenInitTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional que contiene los datos del inicializador del nodo oculto, H_(t-1). El contenido de este tensor solo se usa en el primer índice de bucle t. Si no se especifica, el valor predeterminado es 0. Este tensor tiene tamaños { 1, num_directions, batch_size, hidden_size }. El tensor no admite la marca de DML_TENSOR_FLAG_OWNED_BY_DML .

CellMemInitTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional que contiene los datos del inicializador de celda, C_(t-1). El contenido de este tensor solo se usa en el primer índice de bucle t. Si no se especifica, el valor predeterminado es 0. Este tensor tiene tamaños { 1, num_directions, batch_size, hidden_size }. El tensor no admite la marca de DML_TENSOR_FLAG_OWNED_BY_DML .

SequenceLengthsTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional que contiene un seq_length independiente para cada elemento del lote. Si no se especifica, todas las secuencias del lote tienen longitud seq_length. Este tensor tiene tamaños { 1, 1, 1, batch_size }. El tensor no admite la marca de DML_TENSOR_FLAG_OWNED_BY_DML .

PeepholeTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional que contiene los datos de peso de los agujeros, P. Si no se especifica, el valor predeterminado es 0. Concatenación de P_[iof] y P_B[iof] (si es bidireccional). Este tensor tiene tamaños { 1, 1, num_directions, 3 * hidden_size }. El tensor no admite la marca de DML_TENSOR_FLAG_OWNED_BY_DML .

OutputSequenceTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional con el que escribir la concatenación de todos los valores de salida intermedios de los nodos ocultos, H_t. Este tensor tiene tamaños { seq_length, num_directions, batch_size, hidden_size }. seq_length se asigna al índice del bucle t.

OutputSingleTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional con el que escribir el último valor de salida de los nodos ocultos, H_t. Este tensor tiene tamaños { 1, num_directions, batch_size, hidden_size }.

OutputCellSingleTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional con el que escribir el último valor de salida de la celda, C_t. Este tensor tiene tamaños { 1, num_directions, batch_size, hidden_size }.

ActivationDescCount

Tipo: UINT

Este campo determina el tamaño de la matriz ActivationDescs .

ActivationDescs

Tipo: _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC*

Matriz de DML_OPERATOR_DESC que contiene las descripciones de los operadores de activación f(), g() y h(). f(), g() y h() se definen independientemente de la dirección, lo que significa que si se proporcionan DML_RECURRENT_NETWORK_DIRECTION_FORWARD o DML_RECURRENT_NETWORK_DIRECTION_BACKWARD en Dirección, se deben proporcionar tres activaciones. Si se define DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL , se deben proporcionar seis activaciones. En el caso de las bidireccionales, las activaciones deben proporcionarse f(), g() y h() para el reenvío seguido de f(), g() y h() para versiones anteriores.

Direction

Tipo: const DML_RECURRENT_NETWORK_DIRECTION*

Dirección del operador: hacia delante, hacia atrás o bidireccional.

ClipThreshold

Tipo: float

Umbral de recorte de celda. El recorte enlaza los elementos de un tensor en el intervalo de [-ClipThreshold, +ClipThreshold], y se aplica a la entrada de activaciones.

UseClipThreshold

Tipo: BOOL

TRUE si se debe usar ClipThreshold . De lo contrario, FALSE.

CoupleInputForget

Tipo: BOOL

TRUE si se deben acoplar las puertas de entrada y olvidar. De lo contrario, FALSE.

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_1_0.

Restricciones tensor

BiasTensor, CellMemInitTensor, HiddenInitTensor, InputTensor, OutputCellSingleTensor, OutputSequenceTensor, OutputSingleTensor, PeepholeTensor, RecurrenceTensor y WeightTensor deben tener el mismo DataType.

Compatibilidad con Tensor

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
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 Salida opcional 4 FLOAT32, FLOAT16
OutputSingleTensor Salida opcional 4 FLOAT32, FLOAT16
OutputCellSingleTensor Salida opcional 4 FLOAT32, FLOAT16

Requisitos

Requisito Valor
Header directml.h