开始使用免费开始使用

梯度消失问题

另一类可能出现的梯度问题是梯度消失,也就是梯度趋近于 0。这一问题更难解决,因为它不易被发现。若损失函数在每一步都没有改善,是因为梯度变为 0 从而无法更新权重,还是因为模型本身学不到东西?

在需要"长记忆"(例如长句子)的 RNN 模型中,这个问题更常见。

在本练习中,您将基于更长的句子,在 IMDB 数据上观察该问题。数据已加载到变量 Xy 中,同时已经为您导入了 SequentialSimpleRNNDense 类以及将 matplotlib.pyplot 命名为 plt。模型已预训练 100 个 epoch,其权重和训练历史分别保存在文件 model_weights.h5 与变量 history 中。

本练习是课程的一部分

使用 Keras 构建语言建模的循环神经网络(RNN)

查看课程

练习说明

  • 向模型添加一层 SimpleRNN
  • 使用方法 .load_weights() 将预训练权重加载到模型中。
  • 将训练数据的准确率(属性 'acc')添加到图中。
  • 使用方法 .show() 显示图像。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Create the model
model = Sequential()
model.add(____(units=600, input_shape=(None, 1)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])

# Load pre-trained weights
model.____('model_weights.h5')

# Plot the accuracy x epoch graph
plt.plot(history.history[____])
plt.plot(history.history['val_acc'])
plt.legend(['train', 'val'], loc='upper left')
plt.____()
编辑并运行代码