初始化ExponentialMovingAverage:
1.利用decay(衰减率),控制模型更新速度;2.为每一个变量付应一个shadow variable, 并且shadow variable的初始值为对应变量的初始值,而shadow variable的值会随着每次运行中相应变量发生更新而变化;shadow variable的值为:
shadow_variable = decay*shadow_variable+(1-decay)*variable #variable为待更新的变量,decay为衰减率
由公式可得:decay决定模型的更新速度;
在ExponentialMovingAverage通过num_updates参数来动态实现decay的大小。
若在初始化中提供num_updates参数,则每次使用的衰减率为:
min = {decay,(1+num_updates)/(10+num_updates))}
import tensorflow as tf
v1 = tf.Variable(0,dtype=tf.float32) #定义一个变量,初始值为0
step = tf.Variable(0,trainable=False) #step为迭代轮数变量,控制衰减率
ema = tf.train.ExponentialMovingAverage(0.99,step) #初始设定衰减率为0.99
maintain_averages_op = ema.apply([v1]) #更新列表中的变量
with tf.Session() as sess:
init_op