![df20bec548ea686966aa9eef3277a973.png](https://img-blog.csdnimg.cn/img_convert/df20bec548ea686966aa9eef3277a973.png)
今天用YunYang的evaluate.py评估模型的时候,意外发现用同样的ckpt权重文件转换而成的pb文件效果不一样,使用ckpt的效果非常差,仔细研究后才发现是滑动平均(EMA)搞的鬼,于是便重新重温了一下EMA。
目录
- EMA定义
- EMA原理理解
- ckpt和pb保存不同的原因
- 参考
EMA定义与原理
- EMA(ExponentialMovingAverage),也就是我们常说的滑动平均模型,一般在采用SGD(随机梯度下降)训练的时候,都会用他来提高我们在测试数据的表现,我们从[1]结合tensorflow提供的api来说一下他的定义:
- Tensorflow提供了tf.train.ExponentialMovingAverage来实现滑动平均模型。在初始化ExponentialMovingAverage时,需要提供一个衰减率(decay)。这个衰减率将用于控制模型更新的速度,这个第二部分会告诉大家是怎么控制的。ExponentialMovingAverage对每一个变量会维护一个影子变量(shadow variable),顾名思义,这个影子变量的初始值就是相应变量的初始值,