import tensorflow as tf
v1 = tf.Variable(0, dtype=tf.float32)
step = tf.Variable(0, trainable=False)
ema = tf.train.ExponentialMovingAverage(0.99, step)
maintain_averages_op = ema.apply([v1])
with tf.Session() as sess:
# 初始化
init_op = tf.global_variables_initializer()
sess.run(init_op)
print(sess.run([v1, ema.average(v1)]))
# 更新变量v1的取值 decay = min{0.99, (1+step)/(10+step) = 0.1} = 0.1
#shadow_variable = 0.1*0 + 0.9*5 = 4.5
sess.run(tf.assign(v1, 5))
sess.run(maintain_averages_op)
print(sess.run([v1, ema.average(v1)]))
# 更新step和v1的取值 decay = min{0.99, (1+step)/(10+step) = 0.999} = 0.99
# shadow_variable = 0.99*4.5 + 0.01*10 = 4.555
sess.run(tf.assign(step, 10000))
sess.run(tf.assign(v1, 10))
sess.run(maintain_averages_op)
print(sess.run([v1, ema.average(v1)]))
# 更新一次v1的滑动平均值
# shadow_variable = 0.99*4.555 + 0.01*10 = 4.60945
sess.run(maintain_averages_op)
print(sess.run([v1, ema.average(v1)]))
ExponentialMovingAverage
最新推荐文章于 2025-09-18 10:51:37 发布
博客展示了使用TensorFlow实现变量滑动平均的代码示例。定义了变量v1和step,使用指数滑动平均类tf.train.ExponentialMovingAverage,通过多次更新变量v1和step的值,计算并打印出变量v1及其滑动平均值,展示了滑动平均的计算过程。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
TensorFlow-v2.15
TensorFlow
TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型
2172

被折叠的 条评论
为什么被折叠?



