GroupNormalization

バージョン名: GroupNormalization-12

カテゴリー: 正規化

簡単な説明: https://arxiv.org/abs/1803.08494 で説明されている方法に従って入力テンソルの正規化を行います。

詳細な説明:

GroupNormalization 操作は、入力テンソルの次の変換を実行します。

\[y = scale * (x - mean) / sqrt(variance + epsilon) + bias\]

操作はバッチごと、チャネルのグループごとに適用されます。これは、N x C x H x W レイアウトのサンプル入力が N x G x C/G x H x W 形式に変換されることを意味します。scalebias はモデルへの入力であり、チャネルごとに個別に指定します。平均 (mean) と分散 (variance) はグループごとに計算されます。

属性:

  • num_groups

    • 説明: チャネル次元を分割するグループ G の数を指定します。

    • 値の範囲: 1 と入力テンソルのチャネル数 C の間

    • タイプ: int

    • 必須: はい

  • epsilon

    • 説明: 数値の安定を確保するため分散に追加される非常に小さな値。正規化された要素に対してゼロ除算が発生しないようにします。

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

    • タイプ: float

    • 必須: はい

入力:

  • 1: data - 正規化される入力テンソル。このテンソルのタイプは T です。テンソルの形状は任意ですが、最初の 2 つの次元はそれぞれ batchchannels として解釈されます。必須。

  • 2: scale - 各チャネルのスケール値を含む T タイプの 1D テンソル。このテンソルの予想される形状は [C] です。ここで、Cdata テンソルのチャネル数です。必須。

  • 3: bias - 各チャネルのバイアス値を含む T タイプの 1D テンソル。このテンソルの予想される形状は [C] です。ここで、Cdata テンソルのチャネル数です。必須。

出力:

  • 1: data 入力テンソルと同じ形状およびタイプの出力テンソル。

タイプ:

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

例:

 <layer ... type="GroupNormalization">
     <data epsilon="1e-5" num_groups="4"/>
     <input>
         <port id="0">
             <dim>3</dim>
             <dim>12</dim>
             <dim>100</dim>
             <dim>100</dim>
         </port>
         <port id="1">
             <dim>12</dim> <!-- 12 scale values, 1 for each channel -->
         </port>
         <port id="2">
             <dim>12</dim> <!-- 12 bias values, 1 for each channel -->
         </port>
     </input>
     <output>
         <port id="3">
             <dim>3</dim>
             <dim>12</dim>
             <dim>100</dim>
             <dim>100</dim>
         </port>
     </output>
 </layer>