MVN#
バージョン名: MVN-1
カテゴリー: 正規化
簡単な説明: 入力テンソルの平均分散正規化を計算します。2 つの正規化手法をサポートします: Instance/Contrast Normalization と Layer Normalization。
詳細な説明
across_channels
属性に基づいて、平均値は以下の式のいずれかで計算されます:
true
の場合、平均値はレイヤー正規化を使用して計算されます:false
の場合、平均値はインスタンス/コントラスト正規化を使用して計算されます:
ここで、
reduction_axes
属性が指定されている場合、平均値は次の式に基づいて計算されます:
その後、MVN は入力ブロブから平均値を減算します。
normalize_variance が true
に設定されている場合、出力ブロブは分散で除算されます。
ここで、epsilon
属性に対応します。
属性
across_channels
説明: across_channels は、平均値をチャネル間で共有するかどうかを指定するフラグです。
true
の場合、平均値と分散がすべてのチャネルおよび空間次元の各サンプルに対して計算され (レイヤー正規化)、それ以外の場合、空間次元にわたって各サンプルおよび各チャネルに対して計算されます (インスタンス/コントラスト正規化)。値の範囲:
false
- チャネル間で平均値を共有しませんtrue
- チャネル間で平均値を共有します
タイプ:
boolean
必須: はい
reduction_axes
説明: 一意の要素の 1D テンソルと、正規化スライスを定義する
data
内の次元のインデックスを指定する T_IND タイプ。負の値は、次元を後ろから数えることを意味します。値の範囲: 軸の許容範囲は
[-r; r-1]
です。ここで、r = rank(data)
、順序はソートできませんタイプ:
int
必須: はい
normalize_variance
説明: normalize_variance は分散正規化を行うかどうかを指定するフラグです。
値の範囲:
false
- 分散を正規化しませんtrue
- 分散を正規化します
タイプ:
boolean
必須: はい
eps
説明: eps は、値を正規化するときにゼロによる除算を避けるため分散に追加される数値です。例えば、epsilon が 0.001 に等しい場合は、分散に 0.001 が加算されることを意味します。
値の範囲: 正の浮動小数点数
タイプ:
double
必須: はい
重要
across_channels
属性またはreduction_axes
属性のいずれかを使用する必要があり、これらを一緒に定義することはできません。
入力
1:
data
- タイプ T および任意の形状の入力テンソル。必須。
出力
1: 入力テンソルとしてのタイプ T および形状の正規化されたテンソル。
タイプ
T: 任意の浮動小数点タイプ。
T_IND:
int64
またはint32
。
例
例: across_channels
属性を使用した場合
<layer ... type="MVN">
<data across_channels="true" eps="1e-9" normalize_variance="true"/>
<input>
<port id="0">
<dim>6</dim>
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
</input>
<output>
<port id="2">
<dim>6</dim>
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
</output>
</layer>
例: reduction_axes
属性を使用した場合
<layer ... type="MVN">
<data reduction_axes="2,3" eps="1e-9" normalize_variance="true"/>
<input>
<port id="0">
<dim>6</dim>
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
</input>
<output>
<port id="2">
<dim>6</dim>
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
</output>
</layer>