开始使用免费开始使用

用 dropout 对抗过拟合

神经网络的一个常见问题是倾向于对训练数据过拟合。也就是说,训练集上的评分指标(如 R\(^2\) 或准确率)很高,但在测试集和验证集上很低,模型实际上在拟合训练数据中的噪声。

我们可以通过使用 dropout 来预防过拟合。训练阶段会随机"丢弃"部分神经元,从而避免网络去拟合训练数据中的噪声。keras 提供了可用的 Dropout 层。需要设置 dropout 比例,即训练时被丢弃连接的比例。在 Dropout() 层中,这个比例用 0 到 1 之间的小数表示。

本模型将回到使用均方误差损失函数。

本练习是课程的一部分

Python 金融机器学习

查看课程

练习说明

  • 在模型的第一个 Dense 层之后添加一个 dropout 层(Dropout()),dropout 比例设为 20%(0.2)。
  • .compile() 中使用 adam 优化器和 mse 损失函数。
  • 将模型拟合到 scaled_train_featurestrain_targets,训练 25 个 epoch。

交互式实操练习

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

from keras.layers import Dropout

# Create model with dropout
model_3 = Sequential()
model_3.add(Dense(100, input_dim=scaled_train_features.shape[1], activation='relu'))
model_3.add(____)
model_3.add(Dense(20, activation='relu'))
model_3.add(Dense(1, activation='linear'))

# Fit model with mean squared error loss function
model_3.compile(optimizer=____, loss=____)
history = model_3.fit(____, ____, epochs=____)
plt.plot(history.history['loss'])
plt.title('loss:' + str(round(history.history['loss'][-1], 6)))
plt.show()
编辑并运行代码