# 3.7 测试时的 Batch Norm（Batch Norm at test time）

训练过程中Batch Norm的主要过程：

$$
\mu=\frac1m\sum\_iz^{(i)}
$$

$$
\sigma^2=\frac1m\sum\_i(z^{(i)}-\mu)^2
$$

$$
z\_{norm}^{(i)}=\frac{z^{(i)}-\mu}{\sqrt{\sigma^2+\varepsilon}}
$$

$$
\tilde z^{(i)}=\gamma\cdot z^{(i)}\_{norm}+\beta
$$

$$\mu$$和$$\sigma^2$$是对单个mini-batch中所有m个样本求得的。在测试过程中，如果只有一个样本，求其均值和方差是没有意义的，就需要对$$\mu$$和$$\sigma^2$$进行估计。实际应用是使用指数加权平均（exponentially weighted average）的方法来预测测试过程单个样本的$$\mu$$和$$\sigma^2$$

对于第$$l$$层隐藏层，在训练的过程中, ，对于训练集的Mini-batch，考虑所有mini-batch在该隐藏层下的$$\mu^{\[l]}$$和$${\sigma^{2}}^{\[l]}$$，使用指数加权平均，当训练结束的时候，得到指数加权平均后当前单个样本的$$\mu^{\[l]}$$和$${\sigma^{2}}^{\[l]}$$,这些值直接用于Batch Norm公式的计算，用以对测试样本进行预测，再利用训练过程得到的$$\gamma$$和$$\beta$$计算出各层的$$\tilde z^{(i)}$$值
