滑动平均变量只在测试过程中使用
滑动平均变量作为实际参数变量的影子变量,在训练过程中对神经网络边的实际权重参数 weights 使用滑动平均,得到对应的影子变量 shadow_weights。但在计算交叉熵的损失函数时,仍利用未进行滑动平滑的权重参数 weights的结果 。
在训练过程仍然使用原来不带滑动平均的权重 weights,不然无法得到 weights 下一步更新的值,又怎么求下一步 weights 的影子变量 shadow_weights。之后在测试过程中使用 shadow_weights 来代替 weights 作为神经网络边的权重,这样在测试数据上效果更好。因为 shadow_weights 的更新更加平滑,对于随机梯度下降而言,更平滑的更新说明不会偏离最优点很远。
滑动平均变量在训练过程中产生,在测试过程中使用。训练过程的前向传播过程用原始变量,测试过程的前向传播过程用相应的滑动平均变量。
滑动平均的详细介绍:
https://blog.csdn.net/m0_38106113/article/details/81542863
https://blog.csdn.net/weixin_40532940/article/details/83999838