> For the complete documentation index, see [llms.txt](https://skywateryang.gitbook.io/timeseriesanalysis101/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://skywateryang.gitbook.io/timeseriesanalysis101/7.-ji-yu-shen-du-xue-xi-de-shi-jian-xu-lie-fen-xi-fang-fa/7.1-lstm-chang-duan-qi-ji-yi-wang-luo.md).

# 7.1 LSTM长短期记忆网络

LSTM是RNN（循环神经网络）的衍生，LSTM的提出是为了解决RNN无法适用于长序列的不足，梯度消失或梯度爆炸的现象会导致RNN应用于长时间序列上无法收敛。

LSTM的改进是在RNN的基础上修改了重复单元部分，下图是LSTM的网络结构，每个重复单元都由多个门共同控制，从左至右分别是

* forget gate layer，决定哪些信息要选择性遗忘
* input gate layer，决定要更新哪些信息
* tanh layer，决定要如何更新信息
* output layer，决定如何输入信息

![](https://3993849477-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mhv1ams1lvf_fMUn_is%2F-MiFh_8zxcPT2WmQwTZR%2F-MiFhbH2RY_SDd10cGGF%2F8_1.png?alt=media\&token=72098d25-474d-4fce-a67b-cb1bf56e3c37)

关于LSTM更详细的介绍，可以参考这篇文章，将概念讲的很清楚。

<http://colah.github.io/posts/2015-08-Understanding-LSTMs/>

下面直接进入代码实战部分，LSTM的实现会包括两种方式，使用pytorch搭建（需要自己构建神经网络结构，灵活性强，但同时要写更多代码量）和使用第三方库实现（直接调包，代码量少，虽然Darts包已经将LSTM封装好可以直接使用，但仍然建议使用者对LSTM的原理有一定了解后再尝试，否则不知道怎么调参）
