Skip to content
Butcher Yang edited this page Dec 30, 2017 · 2 revisions

Welcome to the keras_lstm wiki!

Learn LSTM with Python from Jason Brownlee of DeepMind

I Introductions iv

Welcome v

  • Who Is This Book For? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
  • About Your Outcomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
  • How to Read This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
  • About the Book Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
  • About Lessons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
  • About LSTM Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
  • About Prediction Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
  • About Python Code Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
  • About Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
  • About Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii
  • Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii

II Foundations 1

  • 1 What are LSTMs 2
  • 1.1 Sequence Prediction Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  • 1.2 Limitations of Multilayer Perceptrons . . . . . . . . . . . . . . . . . . . . . . . . 7
  • 1.3 Promise of Recurrent Neural Networks . . . . . . . . . . . . . . . . . . . . . . . 9
  • 1.4 The Long Short-Term Memory Network . . . . . . . . . . . . . . . . . . . . . . 10
  • 1.5 Applications of LSTMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
  • 1.6 Limitations of LSTMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
  • 1.7 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
  • 1.8 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
  • 1.9 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
  • 2 How to Train LSTMs 18
  • 2.1 Backpropagation Training Algorithm . . . . . . . . . . . . . . . . . . . . . . . . 19
  • 2.2 Unrolling Recurrent Neural Networks . . . . . . . . . . . . . . . . . . . . . . . . 19
  • 2.3 Backpropagation Through Time . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
  • 2.4 Truncated Backpropagation Through Time . . . . . . . . . . . . . . . . . . . . . 23
  • 2.5 Con- gurations for Truncated BPTT . . . . . . . . . . . . . . . . . . . . . . . . . 23
  • 2.6 Keras Implementation of TBPTT . . . . . . . . . . . . . . . . . . . . . . . . . . 24
  • 2.7 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
  • 2.8 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
  • 2.9 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
  • 3 How to Prepare Data for LSTMs 27
  • 3.1 Prepare Numeric Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
  • 3.2 Prepare Categorical Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
  • 3.3 Prepare Sequences with Varied Lengths . . . . . . . . . . . . . . . . . . . . . . . 34
  • 3.4 Sequence Prediction as Supervised Learning . . . . . . . . . . . . . . . . . . . . 36
  • 3.5 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
  • 3.6 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
  • 3.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  • 4 How to Develop LSTMs in Keras 42
  • 4.1 De- ne the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
  • 4.2 Compile the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  • 4.3 Fit the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  • 4.4 Evaluate the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
  • 4.5 Make Predictions on the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
  • 4.6 LSTM State Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
  • 4.7 Examples of Preparing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
  • 4.8 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
  • 4.9 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
  • 4.10 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
  • 5 Models for Sequence Prediction 54
  • 5.1 Sequence Prediction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
  • 5.2 Models for Sequence Prediction . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  • 5.3 Mapping Applications to Models . . . . . . . . . . . . . . . . . . . . . . . . . . 60
  • 5.4 Cardinality from Time Steps (not Features!) . . . . . . . . . . . . . . . . . . . . 61
  • 5.5 Two Common Misunderstandings . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  • 5.6 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  • 5.7 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  • 5.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
  • 6 How to Develop Vanilla LSTMs 65
  • 6.1 The Vanilla LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
  • CONTENTS iv
  • 6.2 Echo Sequence Prediction Problem . . . . . . . . . . . . . . . . . . . . . . . . . 67
  • 6.3 De- ne and Compile the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
  • 6.4 Fit the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
  • 6.5 Evaluate the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
  • 6.6 Make Predictions With the Model . . . . . . . . . . . . . . . . . . . . . . . . . . 74
  • 6.7 Complete Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
  • 6.8 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
  • 6.9 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
  • 6.10 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
  • 7 How to Develop Stacked LSTMs 77
  • 7.1 The Stacked LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
  • 7.2 Damped Sine Wave Prediction Problem . . . . . . . . . . . . . . . . . . . . . . . 81
  • 7.3 De- ne and Compile the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
  • 7.4 Fit the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
  • 7.5 Evaluate the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
  • 7.6 Make Predictions with the Model . . . . . . . . . . . . . . . . . . . . . . . . . . 88
  • 7.7 Complete Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
  • 7.8 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
  • 7.9 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
  • 7.10 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
  • 8 How to Develop CNN LSTMs 92
  • 8.1 The CNN LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
  • 8.2 Moving Square Video Prediction Problem . . . . . . . . . . . . . . . . . . . . . 96
  • 8.3 De- ne and Compile the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
  • 8.4 Fit the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
  • 8.5 Evaluate the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
  • 8.6 Make Predictions With the Model . . . . . . . . . . . . . . . . . . . . . . . . . . 102
  • 8.7 Complete Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
  • 8.8 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
  • 8.9 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
  • 8.10 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
  • 9 How to Develop Encoder-Decoder LSTMs 107
  • 9.1 Lesson Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
  • 9.2 The Encoder-Decoder LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
  • 9.3 Addition Prediction Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
  • 9.4 De- ne and Compile the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
  • 9.5 Fit the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
  • 9.6 Evaluate the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
  • 9.7 Make Predictions with the Model . . . . . . . . . . . . . . . . . . . . . . . . . . 122
  • 9.8 Complete Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
  • 9.9 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
  • 9.10 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
  • 9.11 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
  • 10 How to Develop Bidirectional LSTMs 128
  • 10.1 The Bidirectional LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
  • 10.2 Cumulative Sum Prediction Problem . . . . . . . . . . . . . . . . . . . . . . . . 131
  • 10.3 De- ne and Compile the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
  • 10.4 Fit the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
  • 10.5 Evaluate the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
  • 10.6 Make Predictions with the Model . . . . . . . . . . . . . . . . . . . . . . . . . . 136
  • 10.7 Complete Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
  • 10.8 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
  • 10.9 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
  • 10.10Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
  • 11 How to Develop Generative LSTMs 140
  • 11.1 The Generative LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
  • 11.2 Shape Generation Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
  • 11.3 De- ne and Compile the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
  • 11.4 Fit the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
  • 11.5 Make Predictions with the Model . . . . . . . . . . . . . . . . . . . . . . . . . . 150
  • 11.6 Evaluate the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
  • 11.7 Complete Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
  • 11.8 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
  • 11.9 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
  • 11.10Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
  • IV Advanced 161
  • 12 How to Diagnose and Tune LSTMs 162
  • 12.1 Evaluating LSTM Models Robustly . . . . . . . . . . . . . . . . . . . . . . . . . 162
  • 12.2 Diagnosing Under- tting and Over- tting . . . . . . . . . . . . . . . . . . . . . . 164
  • 12.3 Tune Problem Framing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
  • 12.4 Tune Model Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
  • 12.5 Tune Learning Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
  • 12.6 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
  • 12.7 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
  • 12.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
  • 13 How to Make Predictions with LSTMs 188
  • 13.1 Finalize a LSTM Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
  • 13.2 Save LSTM Models to File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
  • 13.3 Make Predictions on New Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
  • 13.4 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
  • 13.5 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
  • 13.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
  • 14 How to Update LSTM Models 197
  • 14.1 What About New Data? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
  • 14.2 What Is LSTM Model Updating? . . . . . . . . . . . . . . . . . . . . . . . . . . 198
  • 14.3 5-Step Process to Update LSTM Models . . . . . . . . . . . . . . . . . . . . . . 198
  • 14.4 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
  • 14.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Clone this wiki locally