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>