1

私の質問は、BatchNormalization(BN)によって正規化されているものです。Keras/TensorFlowによって正規化されているものBatchNormalization

私は、BNが各ピクセルのチャネルを別々に、またはすべてのピクセルについて一緒に正規化するかどうかを尋ねています。そしてそれは、画像単位またはバッチ全体のすべてのチャネルでそれを行います。

特に、BNはXで動作しています。言って、X.shape = [m,h,w,c]。したがって、axis=3では、チャネル数(rgbの場合)またはフィーチャマップの数である「c」ディメンションで動作しています。

したがって、Xがrgbであり、したがって3つのチャネルを持つとします。 mに各image=Xのために(これは次元の側面を議論するBNの簡易版である私は、ここでガンマおよびベータが学習されることを理解しそれに関係していない。。)

:BNは、次の操作を実行してい

各画素(H、W)について
  1. は、関連するR、G、& B値の平均を取ります。関連するRの分散を取る各画素(H、W)について
  2. 、G、& bが
  3. は、R、G、& bは、赤色、緑色&青r = (r-mean)/varg = (g-mean)/var、& b = (b-mean)/varを、ない値チャネルはそれぞれXです。

    軸:整数、正規化されなければならない軸(典型的には特徴軸

  4. そして
  5. kerasで

、BatchNormalizationためのドキュメントは言う、mに次の画像に対してこのプロセスを繰り返します)。

は、例えば、data_format="channels_first"Conv2D層を形成した後、 はBatchNormalizationaxis=1を設定します。

しかし、それは正確に各次元に沿って何をしていますか?

+0

BNはほとんどそのように機能します。私はその質問を理解していない。 –

+0

私は、BNが各ピクセルのチャネルを別々に、またはすべてのピクセルについて一緒に正規化するかどうかを尋ねています。そしてそれは、画像単位またはバッチ全体のすべてのチャネルでそれを行います。 – Jon

+0

各ピクセルごとに、バッチ全体で正規化されるため、各バッチの各ピクセルの平均と標準偏差は0と1です。 –

答えて

0

まずアップ、でも畳み込みニューラルネットワークのために特別にoriginal paperに記載されているバッチの正規化を適用するには、いくつかの方法があります。 通常畳み込み BNの違い、また、両方のアプローチは理にかなっている理由を概説this questionでの議論を参照してください。

特にkeras.layers.BatchNormalization入力[m,h,w,c]ことがm*h*w値横切っc平均と標準偏差を計算することを意味畳み込み BNを実装。実行中の平均、実行中のstd dev、ガンマ、ベータ変数の形はちょうど(c,)です。空間次元(ピクセル)の両端の値は、共有です。

より正確なアルゴリズムは:各R、G、およびBチャンネルは、すべてのピクセルとこのチャンネルのすべての画像にわたる平均/分散を計算し、正規化を適用します。

関連する問題