共用方式為


DML_LSTM_OPERATOR_DESC 結構 (directml.h)

在輸入上執行一層長期短期內存 (LSTM) 函式。 此操作員會使用多個閘道來執行此層。 這些網關會在迴圈中執行多次,由序列長度維度和 SequenceLengthsTensor 所決定。

正向方程式

正向方程式

向後方向的方程式

向後方向的方程式

方程式圖例

方程式圖例

語法

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

成員

InputTensor

類型: const DML_TENSOR_DESC*

包含輸入數據 X 的張量。封裝 (,並可能填補) 成一個大小為 的 { 1, seq_length, batch_size, input_size }4D 張量。 seq_length 是對應至索引 t 的維度。 tensor 不支援 DML_TENSOR_FLAG_OWNED_BY_DML 旗標。

WeightTensor

類型: const DML_TENSOR_DESC*

包含權數數據的張數,如果雙向) ,則為 W. 串連 W_[iofc] 和 W_B[iofc] (。 張量的大小 { 1, num_directions, 4 * hidden_size, input_size }為 。 tensor 不支援 DML_TENSOR_FLAG_OWNED_BY_DML 旗標。

RecurrenceTensor

類型: const DML_TENSOR_DESC*

包含迴圈數據的張量 R.如果雙向) ,則為 R_[iofc] 和 R_B[iofc] 串連 (。 這個張量大小 { 1, num_directions, 4 * hidden_size, hidden_size }為 。 tensor 不支援 DML_TENSOR_FLAG_OWNED_BY_DML 旗標。

BiasTensor

類型: _Maybenull_ const DML_TENSOR_DESC*

選擇性的張量,包含偏差數據 B.串連 { W_b[iofc], R_b[iofc] },如果雙向) ,則為 ({ W_Bb[iofc], R_Bb[iofc] } 。 這個張量大小 { 1, 1, num_directions, 8 * hidden_size }為 。 如果未指定,則預設為 0 偏差。 tensor 不支援 DML_TENSOR_FLAG_OWNED_BY_DML 旗標。

HiddenInitTensor

類型: _Maybenull_ const DML_TENSOR_DESC*

選擇性的張量,其中包含隱藏節點初始化表達式數據,H_ (t-1) 。 這個張量的內容只會在第一個迴圈索引 t 上使用。 如果未指定,則預設為 0。 這個張量大小 { 1, num_directions, batch_size, hidden_size }為 。 tensor 不支援 DML_TENSOR_FLAG_OWNED_BY_DML 旗標。

CellMemInitTensor

類型: _Maybenull_ const DML_TENSOR_DESC*

選擇性的 tensor,其中包含儲存格初始化運算式數據,C_ (t-1) 。 這個張量的內容只會在第一個迴圈索引 t 上使用。 如果未指定,則預設為 0。 這個張量大小 { 1, num_directions, batch_size, hidden_size }為 。 tensor 不支援 DML_TENSOR_FLAG_OWNED_BY_DML 旗標。

SequenceLengthsTensor

類型: _Maybenull_ const DML_TENSOR_DESC*

選擇性的張量,其中包含批次中每個元素的獨立seq_length。 如果未指定,批次中的所有序列都會有長度seq_length。 這個張量大小 { 1, 1, 1, batch_size }為 。 tensor 不支援 DML_TENSOR_FLAG_OWNED_BY_DML 旗標。

PeepholeTensor

類型: _Maybenull_ const DML_TENSOR_DESC*

選擇性的張量,其中包含 Peepholes 的權數數據 P。如果未指定,則預設為 0。 如果雙向) ,P_[iof] 和 P_B[iof] (串連。 這個張量大小 { 1, 1, num_directions, 3 * hidden_size }為 。 tensor 不支援 DML_TENSOR_FLAG_OWNED_BY_DML 旗標。

OutputSequenceTensor

類型: _Maybenull_ const DML_TENSOR_DESC*

選擇性的 Tensor,用來寫入隱藏節點的所有中繼輸出值串連,H_t。 這個張量大小 { seq_length, num_directions, batch_size, hidden_size }為 。 seq_length對應至迴圈索引 t。

OutputSingleTensor

類型: _Maybenull_ const DML_TENSOR_DESC*

選擇性的 tensor,用來寫入隱藏節點的最後一個輸出值,H_t。 這個張量大小 { 1, num_directions, batch_size, hidden_size }為 。

OutputCellSingleTensor

類型: _Maybenull_ const DML_TENSOR_DESC*

選擇性的 tensor,用來寫入儲存格的最後一個輸出值,C_t。 這個張量大小 { 1, num_directions, batch_size, hidden_size }為 。

ActivationDescCount

類型: UINT

此欄位會決定 ActivationDescs 陣列的大小。

ActivationDescs

類型:_Field_size_ (ActivationDescCount) const DML_OPERATOR_DESC*

DML_OPERATOR_DESC陣列 ,其中包含啟用 運算子 f () 、g () 和 h () 的描述。 f () 、g () 和 h () 是獨立於方向定義,這表示如果以 Direction 提供DML_RECURRENT_NETWORK_DIRECTION_FORWARDDML_RECURRENT_NETWORK_DIRECTION_BACKWARD,則必須提供三個啟用。 如果定義 DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL ,則必須提供六個啟用。 針對雙向,必須提供 f () 、g () 和 h () ,才能向前轉接 f () 、g () ,以及回溯 () 。

Direction

類型: const DML_RECURRENT_NETWORK_DIRECTION*

運算子的方向:向前、向後或雙向。

ClipThreshold

類型: float

單元格剪輯臨界值。 裁剪會系結 [-ClipThreshold, +ClipThreshold] 範圍內的 tensor 元素,並套用至啟用的輸入。

UseClipThreshold

類型: BOOL

如果應該使用 ClipThreshold,則為 TRUE。 否則為 FALSE

CoupleInputForget

類型: BOOL

如果應該結合輸入和忘記閘道,則為TRUE。 否則為 FALSE

可用性

這個運算子是在 中 DML_FEATURE_LEVEL_1_0引進的。

Tensor 條件約束

BiasTensorCellMemInitTensorHiddenInitTensorInputTensorOutputCellSingleTensorOutputSequenceTensorOutputSingleTensorPeepholeTensorRecurrenceTensor 和 WeightTensor 必須具有相同的 DataType

Tensor 支援

種類 支援的維度計數 支援的資料類型
InputTensor 輸入 4 FLOAT32、FLOAT16
WeightTensor 輸入 4 FLOAT32、FLOAT16
RecurrenceTensor 輸入 4 FLOAT32、FLOAT16
BiasTensor 選擇性輸入 4 FLOAT32、FLOAT16
HiddenInitTensor 選擇性輸入 4 FLOAT32、FLOAT16
CellMemInitTensor 選擇性輸入 4 FLOAT32、FLOAT16
SequenceLengthsTensor 選擇性輸入 4 UINT32
PeepholeTensor 選擇性輸入 4 FLOAT32、FLOAT16
OutputSequenceTensor 選擇性輸出 4 FLOAT32、FLOAT16
OutputSingleTensor 選擇性輸出 4 FLOAT32、FLOAT16
OutputCellSingleTensor 選擇性輸出 4 FLOAT32、FLOAT16

規格需求

需求
標頭 directml.h