tf.train.ExponentialMovingAverage(decay, steps)
tf.train.ExponentialMovingAverage这个函数用于更新参数,就是采用滑动平均的方法更新参数。这个函数初始化需要提供一个衰减速率(decay),用于控制模型的更新速度。这个函数还会维护一个影子变量(也就是更新参数后的参数值),这个影子变量的初始值就是这个变量的初始值,影子变量值的更新方式如下:
shadow_variable = decay * shadow_variable + (1-decay) * variable
shadow_variable是影子变量,variable表示待更新的变量,也就是变量被赋予的值,decay为衰减速率。decay一般设为接近于1的数(0.99,0.999)。decay越大模型越稳定,因为decay越大,参数更新的速度就越慢,趋于稳定。
tf.train.ExponentialMovingAverage这个函数还提供了自己动更新decay的计算方式:
decay= min(decay,(1+steps)/(10+steps))
steps是迭代的次数,可以自己设定。
比如:
import tensorflow as tf;
import numpy as np;
import matplotlib.pyplot as plt;
v1 = tf.Variable(0, dtype=tf.float32)
step = tf.Variable(tf.constant(0))
ema = tf.train.ExponentialMovingAverage(0.99, step)
maintain_average = ema.apply([v1])
with tf.Session() as sess:
init = tf.initialize_all_variables()
sess.run(init)
print sess.run([v1, ema.average(v1)]

本文介绍了TensorFlow中tf.train.ExponentialMovingAverage的使用,它通过滑动平均更新参数,以实现模型稳定性。该函数利用衰减速率(decay)控制更新速度,其中影子变量会按特定公式进行更新。decay通常设置为接近1的值,如0.99或0.999。此外,decay会随迭代次数(steps)动态调整,以平衡模型训练和收敛。示例展示了不同steps下变量和影子变量的值变化情况。
最低0.47元/天 解锁文章
6591





