Результат tf.ExponentialMovingAverage не так ожидаемый

Keira K спросил: 11 июня 2018 в 10:55 в: python

Я хотел бы изучить, как работает t.ExponentialMovingAverage. Вот код:

w1 = tf.constant(10., dtype=tf.float32)
w2 = tf.constant(20., dtype=tf.float32)
w3 = tf.constant(40., dtype=tf.float32)
tf.add_to_collection('w', w1)
tf.add_to_collection('w', w2)
tf.add_to_collection('w', w3)w = tf.get_collection('w')ema = tf.train.ExponentialMovingAverage(decay=0.9)
ema_op = ema.apply(w)with tf.control_dependencies([ema_op]):
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        for i in w:
            print(sess.run(ema.average(i)))

Результаты:

1.0000002
2.0000005
4.000001

Однако, согласно формуле в tf.ExponentialMovingAverage, результаты должен быть

0.9 * 0 + (1 - 0.9) * 10. = 1.0
0.9 * 1.0 + (1 - 0.9) * 20. = 2.9
0.9 * 2.9 + (1 - 0.9) * 40 = 6.61

Кажется, что tf.ExponentialMovingAverage не обновляет значение тени, используя последнее значение тени, но рассчитывает скользящее среднее независимо для каждой итерации.

Am Я думаю неправильно? Любая помощь будет оценена!

0 ответов