LSTMCell#

バージョン名: LSTMCell-1

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

簡単な説明: LSTMCell 操作は単一の LSTM セルを表します。オリジナルの論文 Long Short-Term Memory で説明されている式を使用して出力を計算します。

詳細な説明: LSTMCell は、次の式に基づいて現在のタイムステップの出力 Htot を計算します:

式: * - 行列乗算 
(.)- アダマール (要素ごと) 
[,] - 連結 
f, g, h - 活性化関数です。
    it = f(Xt*(Wi^T) + Ht-1*(Ri^T) + Wbi + Rbi) 
    ft = f(Xt*(Wf^T) + Ht-1*(Rf^T) + Wbf + Rbf) 
    ct = g(Xt*(Wc^T) + Ht-1*(Rc^T) + Wbc + Rbc) 
    Ct = ft (.)Ct-1 + it (.) ct 
    ot = f(Xt*(Wo^T) + Ht-1*(Ro^T) + Wbo + Rbo) 
    Ht = ot (.) h(Ct)

属性

  • hidden_size

    • 説明: hidden_size は隠れ状態のサイズを指定します。

    • 値の範囲: 正の整数

    • タイプ: int

    • 必須: はい

  • activations

    • 説明: 活性化は、ゲートの活性化関数を指定します。ゲートは 3 つあるため、この属性値で 3 つの活性化関数を指定します。

    • 値の範囲: relusigmoidtanh の任意の組み合わせ

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

    • デフォルト値: f は sigmoid、g は tanh、h は tanh

    • 必須: いいえ

  • activations_alpha、activations_beta

    • 説明: activations_alpha, activations_beta 関数の属性。この属性の適用性と意味は、選択した活性化関数によって異なります

    • 値の範囲: 浮動小数点数のリスト

    • タイプ: float[]

    • デフォルト値: なし

    • 必須: いいえ

  • clip

    • 説明: clip は、テンソル・クリッピングの境界値 [-C, C] を指定します。クリッピングはアクティブ化の前に実行されます。

    • 値の範囲: 正の浮動小数点数

    • タイプ: float

    • デフォルト値: infinity はクリッピングが適用されないことを意味します

    • 必須: いいえ

入力

  • 1: X - タイプ T [batch_size, input_size] の 2D テンソル、入力データ。必須。

  • 2: initial_hidden_state - タイプ T [batch_size, hidden_size] の 2D テンソル。必須。

  • 3: initial_cell_state - タイプ T [batch_size, hidden_size] の 2D テンソル。必須。

  • 4: W - タイプ T [4 * hidden_size, input_size] の 2D テンソル、行列乗算の重み、ゲートオーダー: fico。必須。

  • 5: R - タイプ T [4 * hidden_size, hidden_size] の 2D テンソル、行列乗算の再帰重み、ゲートオーダー: fico。必須。

  • 6: B タイプ T [4 * hidden_size] の 1D テンソル、バイアス (重みと再帰重み) の合計、指定されていない場合は 0 とみなされます。オプションです。

出力

  • 1: Ho - タイプ T [batch_size, hidden_size] の 2D テンソル、隠し状態の最後の出力値。

  • 2: Co - タイプ T [batch_size, hidden_size] の 2D テンソル、セル状態の最後の出力値。

タイプ

  • T: サポートされている浮動小数点タイプ。

<layer ... type="LSTMCell" ...> 
    <data hidden_size="128"/> 
    <input> 
        <port id="0"> 
            <dim>1</dim> 
            <dim>16</dim> 
        </port> 
        <port id="1"> 
            <dim>1</dim> 
            <dim>128</dim> 
        </port> 
        <port id="2"> 
            <dim>1</dim> 
            <dim>128</dim> 
        </port> 
        <port id="3"> 
            <dim>512</dim> 
            <dim>16</dim> 
        </port> 
        <port id="4"> 
            <dim>512</dim> 
            <dim>128</dim> 
        </port> 
        <port id="5"> 
            <dim>512</dim> 
        </port> 
    </input> 
    <output> 
        <port id="6"> 
            <dim>1</dim> 
            <dim>128</dim> 
        </port> 
        <port id="7"> 
            <dim>1</dim> 
            <dim>128</dim> 
        </port> 
    </output> 
</layer>