Keras 使用 LSTM RNN 进行时间序列预测
基于长短期记忆 (LSTM) 的 RNN 来进行序列分析。序列是一组值,其中每个值对应于特定的时间实例。让我们考虑一个阅读句子的简单示例。阅读和理解句子包括按照给定的顺序阅读单词并尝试理解给定上下文中的每个单词及其含义,最终以积极或消极的情绪理解句子。
这里把单词当作值,第一个值对应第一个单词,第二个值对应第二个单词,以此类推,并且顺序会严格保持。序列分析在自然语言处理中经常使用,以找到给定文本的情感分析。
创建一个 LSTM 模型来分析 IMDB 电影评论并找出其正面/负面情绪。
序列分析的模型可以表示如下:
# 第 1 步:导入模块
from keras.preprocessing import sequence
from keras.models import Sequential
from keras.layers import Dense, Embedding
from keras.layers import LSTM
from keras.datasets import imdb
# 第 2 步:加载数据
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words = 2000)
# 第 3 步:处理数据
x_train = sequence.pad_sequences(x_train, maxlen=80)
x_test = sequence.pad_sequences(x_test, maxlen=80)
# 第 4 步:创建模型
model = Sequential()
model.add(Embedding(2000, 128))
model.add(LSTM(128, dropout = 0.2, recurrent_dropout = 0.2))
model.add(Dense(1, activation = 'sigmoid'))
# 第 5 步:编译模型
model.compile(loss = 'binary_crossentropy',
optimizer = 'adam', metrics = ['accuracy'])
# 第 6 步:训练模型
model.fit(
x_train, y_train,
batch_size = 32,
epochs = 15,
validation_data = (x_test, y_test)
)
# 第 7 步 - 评估模型
score, acc = model.evaluate(x_test, y_test, batch_size=32)
print('Test score:', score)
print('Test accuracy:', acc)