weixin_43546793 2019-08-24 01:10 采纳率: 20%
浏览 849

python深度学习中指数移动平均值的计算代码问题

最近在看《python深度学习》,其中3.6提到了用指数移动平均值来得到光滑的曲线:

def smooth_curve(points, factor=0.9):
  smoothed_points = []
  for point in points:
    if smoothed_points:
      previous = smoothed_points[-1]
      smoothed_points.append(previous * factor + point * (1 - factor))
    else:
      smoothed_points.append(point)
  return smoothed_points

smooth_mae_history = smooth_curve(average_mae_history[10:])

plt.plot(range(1, len(smooth_mae_history) + 1), smooth_mae_history)
plt.xlabel('Epochs')
plt.ylabel('Validation MAE')
plt.show()

百度了一下,指数移动平均值的计算公式应该是:

EMAtoday=α * Pricetoday + ( 1 - α ) * EMAyesterday;

如果按照这个公式,计算代码应为:

factor * point + (1 - factor) * previous

而非书中提到的:

previous * factor + point * (1 - factor)

想请教下,是书上错了还是我理解错了?还想请教下factor=0.9时怎么得出的?

  • 写回答

2条回答 默认 最新

  • JonathanYan 2019-08-24 10:38
    关注

    你提到的这两个算法是一样的啊,只不过其中一个的factor在另一个里是1-factor。
    0.9只不过是作者取得一个默认值,你要是想换可以自己改,没什么怎么得出的。
    没人会问你一天三顿饭的3是怎么得出的,让你列计算过程。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!