Keras – 使用LSTM RNN进行时间序列预测
在本章中,让我们编写一个简单的基于长短时记忆(LSTM)的RNN来做序列分析。一个序列是一组值,其中每个值都对应于一个特定的时间实例。让我们考虑一个简单的例子:阅读一个句子。阅读和理解一个句子包括按照给定的顺序阅读单词,并试图理解每个单词及其在给定语境中的含义,最后以积极或消极的情绪理解该句子。
在这里,单词被视为值,第一个值对应于第一个单词,第二个值对应于第二个单词,等等,而且顺序将被严格保持。 序列分析 在自然语言处理中经常被用来寻找给定文本的情感分析。
让我们创建一个LSTM模型来分析IMDB的电影评论,并找到其积极/消极的情绪。
序列分析的模型可以表示如下
该模型的核心特征如下—
- 输入层使用嵌入层,有128个特征。
-
第一层,Dense由128个单元组成,正常落差和递归落差设置为0.2。
-
输出层, Dense 由1个单元和 “sigmoid “激活函数组成。
-
使用 binary_crossentropy 作为损失函数。
-
使用 adam 作为优化器。
-
使用 准确性 作为衡量标准。
-
使用32作为批次大小。
-
使用15次作为epochs。
-
使用80作为单词的最大长度。
-
使用2000作为一个给定句子中的最大单词数。
第1步:导入模块
让我们导入必要的模块。
第2步:加载数据
让我们导入imdb数据集。
这里、
- imdb 是一个由Keras提供的数据集。它代表了一个电影及其评论的集合。
-
num_words 代表评论中的最大字数。
第3步:处理数据
让我们根据我们的模型来改变数据集,这样它就可以被送入我们的模型。数据可以用下面的代码来改变 —
这里、
sequence.pad_sequences 将形状为 (data) 的输入数据列表转换成形状为 (data, timesteps) 的二维NumPy数组 。 基本上,它在给定的数据中加入时间段的概念。它生成了长度为 maxlen 的时间段 。
第4步:创建模型
让我们来创建实际的模型。
这里、
我们使用 嵌入 层作为输入层,然后加入LSTM层。最后, 密集层 被用作输出层。
第5步:编译模型
让我们使用选定的损失函数、优化器和度量标准来编译该模型。
第6步:训练模型
让我们使用 fit() 方法训练模型。
执行应用程序将输出以下信息—
第7步 – 评估模型
让我们使用测试数据来评估该模型。
执行上述代码将输出以下信息—