《Tensorflow 实战Google深度学习框架》这本书的滑动平均公式好像错了
我看的书是2017年3月第1版的,在4.4.3节P80处讲到滑动平均模型如下
书中给的公式是:
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,这篇博文说的公式也是和我更正后的公式一致。有想法的同学欢迎留言讨论。