DML_GRU_OPERATOR_DESC構造体 (directml.h)

入力に対して (標準レイヤー) 1 層ゲート再帰ユニット (GRU) 関数を実行します。 この演算子は、複数のゲートを使用してこのレイヤーを実行します。 これらのゲートは、シーケンス長の次元と SequenceLengthsTensorによって決定されるループ内で複数回実行されます。

前方方向の数式

順方向 の式を する

後方方向の数式

後方方向 の数式を する

数式の凡例

数式の凡例 を する

構文

struct DML_GRU_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;
  BOOL                            LinearBeforeReset;
};

メンバーズ

InputTensor

型: const DML_TENSOR_DESC*

入力データを含むテンソル。X. サイズを持つ 1 つの 4D テンソルにパック (および埋め込まれる可能性があります)。 seq_lengthは、インデックス t にマップされるディメンションです。 テンソルは、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。

WeightTensor

型: const DML_TENSOR_DESC*

重みデータを含むテンソル。W. W_[zrh] と W_B[zrh] の連結 (双方向の場合)。 テンソルにはサイズがあります。 テンソルは、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。

RecurrenceTensor

型: const DML_TENSOR_DESC*

繰り返しデータを含むテンソル。R. R_[zrh] と R_B[zrh] の連結 (双方向の場合)。 テンソルにはサイズがあります。 テンソルは、DML_TENSOR_FLAG_OWNED_BY_DML フラグをサポートしていません。

BiasTensor

型: _Maybenull_ const DML_TENSOR_DESC*

バイアス データを含む省略可能なテンソル。B. 連結 (W_b[zrh]、R_b[zrh])、(W_Bb[zrh]、R_Bb[zrh]) (双方向の場合)。 テンソルにはサイズがあります。 テンソルは、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() と g() の説明を含む DML_OPERATOR_DESC の配列。 f() と g() の両方が方向とは独立して定義されます。つまり、DML_RECURRENT_NETWORK_DIRECTION_FORWARD または DML_RECURRENT_NETWORK_DIRECTION_BACKWARD方向で指定されている場合は、2 つのアクティブ化を指定する必要があります。 DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL を指定する場合は、4 つのアクティブ化を指定する必要があります。 双方向の場合は、前方に f() と g() を指定し、その後に後方に f() と g() を指定する必要があります。

Direction

型: const DML_RECURRENT_NETWORK_DIRECTION*

演算子の方向 (前方、後方、双方向)。

LinearBeforeReset

型: BOOL

TRUE 、非表示ゲートの出力を計算するときに、リセット ゲートの出力を乗算する前に線形変換を適用する必要があることを指定します。 それ以外の場合は、FALSEします。

可用性

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

Tensor 制約

BiasTensorHiddenInitTensorInputTensorOutputSequenceTensorOutputSingleTensorRecurrenceTensor、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

必要条件

要件 価値
ヘッダー directml.h