上一篇文章详细介绍了Batch Normalization的原理、涉及的数学公式,基于这些内容,我们可以实现一个简单的BN操作。但是在实际应用中,只是实现公式描述的BN是无法满足系统需求的。本文将以作者向dynet贡献BN源代码的经历,详细描述如何基于Eigen实现一个实用的Batch Normalization操作。
文章结构
滑动均值/方差
上一篇文章中讲到在训练过程中,BN操作是基于当前batch计算mean和variance的。在测试过程中,我们希望每个BN操作是基于整体数据的mean和variance,扫描所有数据求得mean和variance显然是不现实的,但是测试阶段又不能缺少这两个变量,那么该怎么办呢?
实际上,金融领域已经采取了一些在线方法来计算流数据的mean和variance,这些在线方法得到的mean和variance被称作moving_average和moving_variance.
滑动的实现方法
待补充
总结
基于eigen的实现方式: