import tensorflow as tf
x = tf.Variable(0.0)
#定义一个滑动平均值类。decay越大模型越稳,一般设成非常接近1的数(0.99或0.999)
#如果设置了num_updata参数,那么该滑动平均值会随着更新速度的变化而变化
averages_class = tf.train.ExponentialMovingAverage(0.99)
#为变量列表中的每个变量创建一个影子变量。
#tf.trainable_variables()返回集合图上中,没有指定trainable_variables= False的变量
average_op = averages_class.apply(tf.trainable_variables())
#计算变量的滑动平均值
average = averages_class.average(x)
a = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(a)
for i in range(6):
#每次循环都要更新影子变量的值
sess.run(average_op)
print(sess.run(x)," ",sess.run(average))
#0.0 0.0
#5.0 0.049999952
#10.0 0.14949986
#15.0 0.29800472
#20.0 0.4950245
#25.0 0.74007404
#每次循环x加5
y = tf.add(x, 5.0)
#重新给x赋值,并更新
sess.run(tf.assign(x, y))
decay(衰减率)的选择,对模型的影响