LSTM

深入理解Keras LSTM的stateful

2018-10-17  本文已影响0人  沐雨浥尘

博客原文——深入理解Keras LSTM的stateful

Keras LSTM的stateful非常容易用错,前段时间研究了一下,记记笔记~
如有错误,欢迎评论指出~

结论先行

官方FAQ

最好的学习资料永远是官方文档

使RNN具有状态意味着每批样品的状态将被重新用作下一批样品的初始状态。
当使用有状态 RNN 时,假定:

要在 RNN 中使用状态,你需要:

有点绕,我给翻译翻译


下一个问题,shuffle

官方examples

还是那句话,最好的学习资料在官方,墙裂建议好好跑跑这份代码,以下只是我的笔记~

参数说明

结论

我再来翻译翻译

实际效果

代码&结果

(tsteps, lahead, batch_size) Stateful RMSE Stateless RMSE
2, 1, 1 0.014813 0.031049
2, 2, 1 0.011407 0.000185
2, 2, 2 0.010075 0.000017
2, 1, 2 0.028951 0.029062
  1. tsteps=2, lahead=1, batch_size=1,理论上stateful能收敛,stateless不能收敛,RMSE(stateful) < RMSE(stateless)没问题
  2. tsteps=2, lahead=2, batch_size=1,理论上都能收敛,stateless效果很好
  3. tsteps=2, lahead=2, batch_size=2,在上次实验的基础上,batch_size调整为2,stateful似乎好了一点点
  4. tsteps=2, lahead=1, batch_size=2,与实验1对照,stateful似乎变差了很多,为什么呢?因为lahead不等于batch_size时,LSTM状态没有传递

本例中,需要保证lahead = batch_size,才能保证stateful正确传递状态,为什么呢?请看图~


明白了吧~

非官方FAQ

参考目录

上一篇 下一篇

猜你喜欢

热点阅读