AUGRUSequence#

バージョン名: AUGRUSequence

カテゴリー: シーケンス処理

簡単な説明: AUGRUSequence 操作は、一連の AUGRU セル (注目度更新ゲートを備えた GRU) を表します。

詳細な説明: AUGRUSequenceGRUSequence の主な違いは、更新ゲートの乗数である追加の注目度スコア入力 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

    • 説明: ゲートの活性化関数

    • 値の範囲: sigmoidtanh

    • タイプ: 文字列のリスト

    • デフォルト値: 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_resetFalse に設定されている場合、形状は [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>