在采用随机梯度下降算法训练神经网络时,使用滑动平均模型在很多应用中都可以在一定程度上提高最终模型在测试数据上的表笑。
在Tensorflow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模型。在初始化ExponentialMovingAverage 时,需要提供一个衰减率(decay)。这个衰减率会用于控制模型的更新速度。ExponentialMovingAverage对每一个变量会维护一个影子变量(shadow variable),这个影子变量的初始值就是相应变量的初始值,而每次运行变量更新时,影子变量的值会被更新为:
其中shadow_variable是影子变量,variable是待更新的变量,decay是衰减率。从公式中可以看到,decay决定了模型更新的速度,decay越大模型越稳定。在实际应用中,decay一般被设置为非常接近1的数(0.99、0.999),为了使得模型在训练前期可以更新的更快,ExponentialMovingAverage提供了num_updates参数来动态设置decay的大小。如果ExponentialMovingAverage初始化时提供了num_dates参数,那么每次使用的衰减率将会是:
tf.Varialbe():trainable: 如果为True(默认也为Ture),这个变量就会被添加到图的集合GraphKeys.TRAINABLE_VARIABLES.中去 ,这个collection被作为优化器类的默认列表。
代码:
相关文章
- Stanford CS231n实践笔记(课时22卷积神经网络工程实践技巧与注意点 cnn in practise 上)
- 机器学习和PHP的神经网络:PHP-ML库
- Deeplearning.ai课程笔记-神经网络和深度学习
- deeplearning.ai 改善深层神经网络 week1 深度学习的实用层面 听课笔记
- 针对深度学习(神经网络)的AI框架调研
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1
- (转)神经网络和深度学习简史(第一部分):从感知机到BP算法
- [DeeplearningAI笔记]神经网络与深度学习人工智能行业大师访谈
- deeplearning.ai 神经网络和深度学习 week2 神经网络基础
- BP神经网络与卷积神经网络(CNN)