chainer.functions.batch_normalization(x, gamma, beta, eps=2e-5, running_mean=None, running_var=None, decay=0.9)[source]

バッチ正規化関数。

 

入力値 x と2つのパラメータ変数 gamma と beta をとります。このパラメータ変数は同じ次元でなければならず、チャネルのshapeとして参照されます。このチャネルのshapeは平均化されていない入力値の次元数に対応しています。入力値の1次元目はバッチサイズに相当するため、xの2次元目はチャネルの1次元目に相当し、xの3次元目は(もし存在するならば)チャネルの2次元目に、というかたちで相応していくことになります。ですから、入力値の次元は少なくともチャネルの次元数+1でなければなりません。 効率的な総バッチサイズはチャネル次元を除いたxにおける全ての次元の積であると考えられるでしょう。

 

例えば、入力が4次元で、パラメータ変数が1次元の場合、入力値の1次元目はバッチサイズで2次元目はチャネルサイズ、残りの2次元はバッチ正規化の計算の際にバッチサイズに添って平均化するための空間次元とみなされます。つまり、総バッチサイズは2番めの次元を除く全ての入力値の積であると考えられます。

 

Note: この関数が呼び出されると、更新された移動平均と移動分散の統計へアクセスすることができなくなります。なぜなら、これらは関数オブジェクトのメンバーであるため、呼び出し元からアクセスすることが出来ないからです。これら更新された移動統計値にアクセスしたい場合、 関数オブジェクトの新しいインスタンスを取得し、オブジェクトを呼び出し、 running_mean属性 や running_var 属性にアクセスする必要があります。

 

このやり方については、対応するLinkクラスもお読みください。

Warning

train 引数は、v2以降ではサポートされません。 替わりにchainer.using_config('train', train)を使用してください。 chainer.using_config()もお読みください。

Parameters:
  • x (Variable) – 入力値
  • gamma (Variable) – 正規化されたデータのスケール・パラメータ。
  • beta (Variable) – スケールした正規化データのシフト・パラメータ。
  • eps (float) – 数値的安定性のためのイプシロン値。
  • running_mean (numpy.ndarray or cupy.ndarray) –平均(mean)の移動平均。 減衰パラメータを用いた幾つかのミニバッチでのmeanの移動平均。 None が設定されている場合、移動平均は計算されない。また、 Noneが設定されている場合、runnng_var は Noneでなければならない。
  • running_var (numpy.ndarray or cupy.ndarray) – 分散の移動平均。これは減衰パラメータを用いたいくつかのミニバッチでの分散の移動平均。 Noneが設定されている場合、移動平均は計算されない。また Noneが設定されている場合、 running_mean のもNone.でなければならない。
  • decay (float) – 移動平均の減衰率。訓練中に用いられる。

お読みください。: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 

See also

links.BatchNormalization