旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【Python】 フレームワークによるBatchNormalizationのmomentumの違いについて

KerasのBatchNormalizationの引数momentumはデフォルト値が0.99です。一方でTorchのBatchNormalizationの引数momentumはデフォルト値が0.1のようです。
いくらフレームワークが違うといっても、ここまで初期値が違うものかと調べてみると、Kerasは下記式のαをmomentumと呼んでいて(Tensorflowのassign_moving_averageメソッドまで辿るとmomentumではなくdecayという名前に変わっています)、Torchは1-αをmomentumと呼んでいるようです(Batch Normalization Momentum? · Issue #695 · torch/nn · GitHub)。

 MovingAverage(t)=MovingAverage(t-1)×α+BatchAverage(t)×{(1-α)}

TorchのプログラムをKerasに移植する、またはその逆を行う場合には注意が必要そうです。