《Tensorflow 实战Google深度学习框架》这本书的滑动平均公式好像错了

我看的书是2017年3月第1版的,在4.4.3节P80处讲到滑动平均模型如下

《Tensorflow 实战Google深度学习框架》这本书的滑动平均公式好像错了

书中给的公式是:

shadow_variable=decay*shadow_variable+(1-decay)*variable

但我觉得正确的公式应该是:

shadow_variable=decay*variable+(1-decay)*shadow_variable

如果按照书中公式,可以得到如下结果

  variable shadow_variable
1 1 1
2 4 1.03
3 2 1.0397
4 5 1.079303
5 1 1.07850997
6 2 1.08772487
7 10 1.176847622
8 2 1.185079145
9 4 1.213228354
10 5 1.25109607
11 4 1.27858511
12 5 1.315799259
13 4 1.342641266
14 2 1.349214853
15 5 1.385722705
16 8 1.451865478
17 2 1.457346823
18 1 1.452773355
19 0 1.438245621
20 1 1.433863165
21 3 1.449524533

按照我说的公式可以得到如下结果

  variable shadow_variable
1 1 1
2 4 3.97
3 2 2.0197
4 5 4.970197
5 1 1.03970197
6 2 1.99039702
7 10 9.91990397
8 2 2.07919904
9 4 3.98079199
10 5 4.98980792
11 4 4.009898079
12 5 4.990098981
13 4 4.00990099
14 2 2.02009901
15 5 4.97020099
16 8 7.96970201
17 2 2.05969702
18 1 1.01059697
19 0 0.01010597
20 1 0.99010106
21 3 2.979901011

很显然书中的公式有问题,还可以参考这篇博文https://blog.****.net/x_i_y_u_e/article/details/44194761,这篇博文说的公式也是和我更正后的公式一致。有想法的同学欢迎留言讨论。