DML_LSTM_OPERATOR_DESC 構造体 (directml.h)
入力に対して 1 層の長期短期メモリ (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 }
を持つ 1 つの 4-D テンソルにパック (および埋め込まれる可能性があります)。 seq_lengthは、インデックス t にマップされるディメンションです。 テンソルは 、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 }
は です。 テンソルは 、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 }
は です。 テンソルは 、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。
BiasTensor
型: _Maybenull_ const DML_TENSOR_DESC*
バイアス データを含む省略可能なテンソル。B. の連結、および { W_Bb[iofc], R_Bb[iofc] }
(双方向の{ W_b[iofc], R_b[iofc] }
場合)。 このテンソルのサイズ { 1, 1, num_directions, 8 * hidden_size }
は です。 指定しない場合、既定値は 0 バイアスになります。 テンソルは 、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。
HiddenInitTensor
型: _Maybenull_ const DML_TENSOR_DESC*
非表示ノード初期化子データを含む省略可能なテンソル (H_(t-1)。 このテンソルの内容は、最初のループ インデックス t でのみ使用されます。 指定しない場合、既定値は 0 です。 このテンソルのサイズ { 1, num_directions, batch_size, hidden_size }
は です。 テンソルは 、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。
CellMemInitTensor
型: _Maybenull_ const DML_TENSOR_DESC*
セル初期化子データを含む省略可能なテンソル (C_(t-1)。 このテンソルの内容は、最初のループ インデックス t でのみ使用されます。 指定しない場合、既定値は 0 です。 このテンソルのサイズ { 1, num_directions, batch_size, hidden_size }
は です。 テンソルは 、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。
SequenceLengthsTensor
型: _Maybenull_ const DML_TENSOR_DESC*
バッチ内の各要素の独立したseq_lengthを含むオプションのテンソル。 指定しない場合、バッチ内のすべてのシーケンスの長さはseq_length。 このテンソルのサイズ { 1, 1, 1, batch_size }
は です。 テンソルは 、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。
PeepholeTensor
型: _Maybenull_ const DML_TENSOR_DESC*
ピープホールの重量データを含むオプションのテンソル P。指定しない場合、既定値は 0 です。 P_[iof] と P_B[iof] の連結 (双方向の場合)。 このテンソルのサイズ { 1, 1, num_directions, 3 * hidden_size }
は です。 テンソルは 、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。
OutputSequenceTensor
型: _Maybenull_ const DML_TENSOR_DESC*
非表示ノードのすべての中間出力値の連結を書き込むオプションのテンソルH_t。 このテンソルのサイズ { seq_length, num_directions, batch_size, hidden_size }
は です。 seq_lengthは、ループ インデックス t にマップされます。
OutputSingleTensor
型: _Maybenull_ const DML_TENSOR_DESC*
非表示ノードの最後の出力値を書き込むテンソル (省略可能) H_t。 このテンソルのサイズ { 1, num_directions, batch_size, hidden_size }
は です。
OutputCellSingleTensor
型: _Maybenull_ const DML_TENSOR_DESC*
セルの最後の出力値を書き込むテンソル (省略可能) C_t。 このテンソルのサイズ { 1, num_directions, batch_size, hidden_size }
は です。
ActivationDescCount
型: UINT
このフィールドは、 ActivationDescs 配列のサイズを決定します。
ActivationDescs
型: _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC*
アクティブ化演算子 f()、g()、h() の説明を含む DML_OPERATOR_DESC の配列。 f()、g()、h() は方向とは独立して定義されます。つまり、 方向にDML_RECURRENT_NETWORK_DIRECTION_FORWARD または DML_RECURRENT_NETWORK_DIRECTION_BACKWARD が指定されている 場合は、3 つのアクティブ化を指定する必要があります。 DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONALが定義されている場合は、6 つのアクティブ化を指定する必要があります。 双方向の場合は、f()、g()、および h() の順に f()、g()、h() を後方に指定する必要があります。
Direction
型: const DML_RECURRENT_NETWORK_DIRECTION*
演算子の方向:前方、後方、または双方向。
ClipThreshold
型: float
セル クリップのしきい値。 クリッピングはテンソルの要素を [-ClipThreshold
, +ClipThreshold
] の範囲内にバインドし、アクティブ化の入力に適用されます。
UseClipThreshold
種類: BOOL
ClipThreshold を使用する必要がある場合は TRUE。 それ以外の場合は FALSE。
CoupleInputForget
種類: BOOL
入力 ゲートとフォーゲット ゲートを結合する必要がある場合は TRUE。 それ以外の場合は FALSE。
可用性
この演算子は、 で DML_FEATURE_LEVEL_1_0
導入されました。
テンソル制約
BiasTensor、 CellMemInitTensor、 HiddenInitTensor、 InputTensor、 OutputCellSingleTensor、 OutputSequenceTensor、 OutputSingleTensor、 PepeholeTensor、 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 |
ピープホールテンソル | 省略可能な入力 | 4 | FLOAT32、FLOAT16 |
OutputSequenceTensor | 省略可能な出力 | 4 | FLOAT32、FLOAT16 |
OutputSingleTensor | 省略可能な出力 | 4 | FLOAT32、FLOAT16 |
OutputCellSingleTensor | 省略可能な出力 | 4 | FLOAT32、FLOAT16 |
要件
要件 | 値 |
---|---|
Header | directml.h |