DML_RNN_OPERATOR_DESC構造体 (directml.h)

入力に対して 1 層の単純な再帰ニューラル ネットワーク (RNN) 関数を実行します。 この関数は、多くの場合、入力ゲートと呼ばれます。 この演算子は、シーケンス長ディメンションと SequenceLengthsTensor によって指定されたループで、この関数を複数回実行します。

前方方向の数式

順方向の数式

後方方向の数式

後方方向の数式

数式の凡例

数式の凡例

構文

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

メンバー

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_iとW_Biの連結 (双方向の場合)。 テンソルのサイズ { 1, num_directions, hidden_size, input_size }は です。 テンソルは 、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。

RecurrenceTensor

型: const DML_TENSOR_DESC*

繰り返し重みデータを含む省略可能なテンソル(R.R_iとR_Biの連結 (双方向の場合)。 このテンソルのサイズ { 1, num_directions, hidden_size, hidden_size }は です。 テンソルは 、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。

BiasTensor

型: _Maybenull_ const DML_TENSOR_DESC*

入力ゲートのバイアス データを含むオプションのテンソル、B. の連結、および { W_Bbi, R_Bbi } (双方向の{ W_bi, R_bi }場合)。 このテンソルのサイズ { 1, 1, num_directions, 2 * hidden_size }は です。 指定しない場合、既定値は 0 になります。 テンソルは 、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。

HiddenInitTensor

型: _Maybenull_ const DML_TENSOR_DESC*

非表示ノード初期化子テンソルを含む省略可能なテンソル。最初のループ インデックス t のH_[t-1] です。 指定しない場合、既定値は 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 フラグをサポートしていません。

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 }は です。

ActivationDescCount

型: UINT

このフィールドは、 ActivationDescs 配列のサイズを決定します。

ActivationDescs

型: _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC*

アクティブ化演算子 f( ) の説明 を含む DML_OPERATOR_DESC の配列。 アクティブ化関数の数は、方向の数と等しくなります。 前方方向と逆方向の場合は、1 つのアクティブ化関数が必要です。 双方向の場合、2 が必要です。

Direction

種類: DML_RECURRENT_NETWORK_DIRECTION

演算子の方向: 前方、後方、または双方向。

可用性

この演算子は で DML_FEATURE_LEVEL_1_0導入されました。

テンソル制約

BiasTensor、、HiddenInitTensorInputTensor、、OutputSequenceTensorOutputSingleTensorRecurrenceTensorおよび WeightTensor には同じ DataType が必要です。

Tensor のサポート

テンソル 種類 サポートされているディメンション数 サポートされるデータ型
InputTensor 入力 4 FLOAT32、FLOAT16
WeightTensor 入力 4 FLOAT32、FLOAT16
RecurrenceTensor 入力 4 FLOAT32、FLOAT16
BiasTensor 省略可能な入力 4 FLOAT32、FLOAT16
HiddenInitTensor 省略可能な入力 4 FLOAT32、FLOAT16
SequenceLengthsTensor 省略可能な入力 4 UINT32
OutputSequenceTensor 省略可能な出力 4 FLOAT32、FLOAT16
OutputSingleTensor 省略可能な出力 4 FLOAT32、FLOAT16

必要条件

   
Header directml.h