AUGRUSequence#
バージョン名: AUGRUSequence
カテゴリー: シーケンス処理
簡単な説明: AUGRUSequence 操作は、一連の AUGRU セル (注目度更新ゲートを備えた GRU) を表します。
詳細な説明: AUGRUSequence と GRUSequence の主な違いは、更新ゲートの乗数である追加の注目度スコア入力 A
です。AUGRU 式は論文 arXiv:1809.03672 に基づいています。
AUGRU 式: * - 行列乗算
(.)- アダマール積 (要素ごと)
f、 g - 活性化関数
z - 更新ゲート、 r - リセットゲート、 h - 隠しゲート
a - 注目度スコア
rt = f(Xt*(Wr^T) + Ht-1*(Rr^T) + Wbr + Rbr)
zt = f(Xt*(Wz^T) + Ht-1*(Rz^T) + Wbz + Rbz)
ht = g(Xt*(Wh^T) + (rt (.)Ht-1)*(Rh^T) + Rbh + Wbh) # 'linear_before_reset' は False
zt' = (1 - at) (.) zt # 注目度スコアによる乗算
Ht = (1 - zt') (.) ht + zt' (.)Ht-1
ゲートの活性化関数: f の場合は sigmoid、g の場合は tanh。順方向のみがサポートされているため、num_directions
は常に 1
になります。
属性
hidden_size
説明: hidden_size は隠れ状態のサイズを指定します。
値の範囲: 正の整数
タイプ:
int
必須: はい
activations
説明: ゲートの活性化関数
値の範囲: sigmoid、tanh
タイプ: 文字列のリスト
デフォルト値: f は sigmoid、g は tanh
必須: いいえ
activations_alpha、activations_beta
説明: activations_alpha, activations_beta 関数の属性。この属性の適用性と意味は、選択した活性化関数によって異なります
値の範囲: []
タイプ:
float[]
デフォルト値: []
必須: いいえ
clip
説明: clip は、テンソル・クリッピングの境界値 [-C, C] を指定します。クリッピングはアクティブ化の前に実行されます。
値の範囲:
0.
タイプ:
float
デフォルト値:
0
- クリッピングが適用されていないことを意味します必須: いいえ
direction
説明: RNN が順方向、逆方向、または双方向であるかを指定します。順方向または逆方向の場合は
num_directions = 1
、双方向の場合はnum_directions = 2
になります。このnum_directions
値は、入力/出力形状の要件を指定します。値の範囲: forward
タイプ:
string
デフォルト値: forward
必須: いいえ
linear_before_reset
説明: linear_before_reset フラグは、隠しゲートの出力が線形変換の前または後にリセットゲートで乗算されるかどうかを示します。
値の範囲: 偽
タイプ:
boolean
デフォルト値: 偽
必須: いいえ
入力
1:
X
- タイプ T1[batch_size, seq_length, input_size]
の 3D テンソル、入力データ。必須。2:
H_t
- タイプ T1 および形状[batch_size, num_directions, hidden_size]
の 3D テンソル。初期の隠し状態データを入力します。必須。3:
sequence_lengths
- タイプ T2 および形状[batch_size]
の 1D テンソル。各バッチ要素の実際のシーケンス長を指定します。必須。4:
W
- タイプ T1 および形状[num_directions, 3 * hidden_size, input_size]
の 3D テンソル。行列乗算の重み、ゲート順序は zrh になります。必須。5:
R
- タイプ T1 および形状[num_directions, 3 * hidden_size, hidden_size]
の 3D テンソル。行列乗算の再帰重み、ゲート順序は zrh になります。必須。6:
B
- タイプ T1 の 2D テンソル。バイアス。linear_before_reset がFalse
に設定されている場合、形状は[num_directions, 3 * hidden_size]
、ゲート順序は zrh になります。それ以外の場合、形状は[num_directions, 4 * hidden_size]
- z ゲートと r ゲートのバイアス (重みと再帰重み) の合計であり、h ゲートのバイアスは個別に配置されます。必須。7:
A
- タイプ T1[batch_size, seq_length, 1]
の 3D テンソル、注目度スコア。必須。
出力
1:
Y
- T1 タイプ[batch_size, num_directions, seq_length, hidden_size]
の 4D テンソル、隠匿されたすべての中間出力値の連結。2:
Ho
- タイプ T1[batch_size, num_directions, hidden_size]
の 3D テンソル、隠し状態の最後の出力値。
タイプ
T1: サポートされている浮動小数点タイプ。
T2: サポートされている整数タイプ。
例
<layer ... type="AUGRUSequence" ...>
<data hidden_size="128"/>
<input>
<port id="0"> <!-- `X` 入力データ -->
<dim>1</dim>
<dim>4</dim>
<dim>16</dim>
</port>
<port id="1"> <!-- `H_t` 入力 -->
<dim>1</dim>
<dim>1</dim>
<dim>128</dim>
</port>
<port id="2"> <!-- `sequence_lengths` 入力 -->
<dim>1</dim>
</port>
<port id="3"> <!-- `W` 重み入力 -->
<dim>1</dim>
<dim>384</dim>
<dim>16</dim>
</port>
<port id="4"> <!-- `R` 再帰重み入力 -->
<dim>1</dim>
<dim>384</dim>
<dim>128</dim>
</port>
<port id="5"> <!-- `B` バイアス入力 -->
<dim>1</dim>
<dim>384</dim>
</port>
<port id="6"> <!-- `A` 注目度スコア入力 -->
<dim>1</dim>
<dim>4</dim>
<dim>1</dim>
</port>
</input>
<output>
<port id="7"> <!-- `Y` 出力 -->
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
<dim>128</dim>
</port>
<port id="8"> <!-- `Ho` 出力 -->
<dim>1</dim>
<dim>1</dim>
<dim>128</dim>
</port>
</output>
</layer>