GELU#

バージョン名: Gelu-7

カテゴリー: 活性化関数

簡単な説明: ガウス誤差線形単位の要素ごとの活性化関数。

詳細な説明:

Gelu の操作については、この記事で紹介されています。これは、次の数式に基づいて、指定された入力テンソルに対して要素ごとの活性化関数を実行します:

\[Gelu(x) = x\cdot\Phi(x)\]

ここで、Φ(x) はガウス分布の累積分布関数です。

Gelu 関数は、approximation_mode 属性に基づいて 2 つの異なる方法で近似できます。

erf 近似モードでは、Gelu 関数は次のように表されます:

\[Gelu(x) = x\cdot\Phi(x) = x\cdot\frac{1}{2}\cdot\left[1 + erf\frac{x}{\sqrt{2}}\right]\]

tanh 近似モードでは、Gelu 関数は次のように表されます:

\[Gelu(x) \approx x\cdot\frac{1}{2}\cdot \left(1 + \tanh\left[\sqrt{\frac{2}{\pi}} \cdot (x + 0.044715 \cdot x^3)\right]\right)\]

属性

  • approximation_mode

    • 説明: Gelu 関数を計算する式を指定します。

    • 値の範囲:

      • erf - ガウス誤差関数を使用して出力を計算します

      • tanh - Tanh 近似を使用して出力を計算します

    • タイプ: string

    • デフォルト値: erf

    • 必須: いいえ

入力:

  • 1: タイプ T の任意の形状のテンソル。必須。

出力:

  • 1: 入力テンソルに適用された要素ごとの Gelu 関数の結果。T タイプのテンソルで、入力テンソルと同じ形状です。

タイプ

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

: tanh 近似モード

<layer ... type="Gelu"> 
    <data approximation_mode="tanh"/> 
        <input> 
            <port id="0"> 
                <dim>1</dim> 
                <dim>128</dim> 
            </port> 
        </input> 
        <output> 
            <port id="1"> 
                <dim>1</dim> 
                <dim>128</dim> 
            </port> 
        </output> 
</layer>

例: erf 近似モード

<layer ... type="Gelu"> 
    <data approximation_mode="erf"/> 
        <input> 
            <port id="0"> 
                <dim>3</dim> 
                <dim>7</dim> 
                <dim>9</dim> 
            </port> 
        </input> 
        <output> 
            <port id="1"> 
                <dim>3</dim> 
                <dim>7</dim> 
                <dim>9</dim> 
            </port> 
        </output> 
</layer>