6.2.2 理解 LSTM 层和 GRU 层
参考:
https://blog.csdn.net/qq_30614345/article/details/98714874
6.2.4 小结
现在你已经学会了以下内容。
‰ 循环神经网络(RNN)的概念及其工作原理。
‰ 长短期记忆(LSTM)是什么,为什么它在长序列上的效果要好于普通 RNN。
‰ 如何使用 Keras 的 RNN 层来处理序列数据。
接下来,我们将介绍 RNN 几个更高级的功能,这可以帮你有效利用深度学习序列模型
6.2.
2 理解 LSTM 层和 GRU 层
SimpleRNN 并不是 Keras 中唯一可用的循环层,还有另外两个: LSTM 和 GRU。在实践中总会用到其中之一,因为 SimpleRNN 通常过于简化,没有实用价值。 SimpleRNN 的最大问题是,在时刻 t,理论上来说,它应该能够记住许多时间步之前见过的信息,但实际上它是不可能学
到这种长期依赖的。其原因在于梯度消失问题(vanishing gradient problem),这一效应类似于在层数较多的非循环网络(即前馈网络)中观察到的效应:随着层数的增加,网络最终变得无法训练。 Hochreiter、 Schmidhuber 和 Bengio 在 20 世纪 90 年代初研究了这一效应的理论原因 a。LSTM 层和 GRU 层都是为了解决这个问题而设计的
6.2.3 Keras 中一个 LSTM 的具体例子
代码清单 6-27 使用 Keras 中的 LSTM 层
A concrete LSTM example in Keras
Now let's switch to more practical concerns: we will set up a model using a LSTM layer and train it on the IMDB data. Here's the network, similar to the one with SimpleRNN that we just presented. We only specify the output dimensionality of the LSTM layer, and leave every other argument (there are lots) to the Keras defaults. Keras has good defaults, and things will almost always "just work" without you having to spend time tuning parameters by hand.
6.2.3 Keras 中一个 LSTM 的具体例子
# 现在我们来看一个更实际的问题:使用 LSTM 层来创建一个模型,然后在 IMDB 数据上
# 训练模型(见图 6-16 和图 6-17)。 这个网络与前面介绍的 SimpleRNN 网络类似。你只需指定
# LSTM 层的输出维度,其他所有参数(有很多)都使用 Keras 默认值。 Keras 具有很好的默认值,
# 无须手动调参,模型通常也能正常运行。
# 代码清单 6-27 使用 Keras 中的 LSTM 层
# 6.2.3 Keras 中一个 LSTM 的具体例子
# 现在我们来看一个更实际的问题:使用 LSTM 层来创建一个模型,然后在 IMDB 数据上
# 训练模型(见图 6-16 和图 6-17)。 这个网络与前面介绍的 SimpleRNN 网络类似。你只需指定
# LSTM 层的输出维度,其他所有参数(有很多)都使用 Keras 默认值。 Keras 具有很好的默认值,
# 无须手动调参,模型通常也能正常运行。
# 代码清单 6-27 使用 Keras 中的 LSTM 层
from keras.layers import LSTM
model = Sequential()
model.add(Embedding(max_features, 32))
model.add(LSTM(32))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['acc'])
history = model.fit(input_train, y_train,
epochs=10,