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_FORWARD或DML_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 條件約束
BiasTensor、CellMemInitTensor、HiddenInitTensor、InputTensor、OutputCellSingleTensor、OutputSequenceTensor、OutputSingleTensor、PeepholeTensor、RecurrenceTensor 和 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 |