私の質問は、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)について- は、関連するR、G、& B値の平均を取ります。関連するRの分散を取る各画素(H、W)について
- 、G、& bが
- は、R、G、& bは、赤色、緑色&青
r = (r-mean)/var
、g = (g-mean)/var
、&b = (b-mean)/var
を、ない値チャネルはそれぞれX
です。軸:整数、正規化されなければならない軸(典型的には特徴軸
- そして kerasで
、BatchNormalizationためのドキュメントは言う、m
に次の画像に対してこのプロセスを繰り返します)。
は、例えば、data_format="channels_first"
とConv2D
層を形成した後、 はBatchNormalization
でaxis=1
を設定します。
しかし、それは正確に各次元に沿って何をしていますか?
BNはほとんどそのように機能します。私はその質問を理解していない。 –
私は、BNが各ピクセルのチャネルを別々に、またはすべてのピクセルについて一緒に正規化するかどうかを尋ねています。そしてそれは、画像単位またはバッチ全体のすべてのチャネルでそれを行います。 – Jon
各ピクセルごとに、バッチ全体で正規化されるため、各バッチの各ピクセルの平均と標準偏差は0と1です。 –