早停法:把优化做"刚刚好"
既然您已经知道如何在优化过程中监控模型性能,就可以使用早停法在继续优化无益时自动停止。由于在无提升时会自动停止,正如 Dan 在视频中演示的那样,您也可以在 .fit() 调用中将 epochs 设为较大的值。
要优化的模型已定义为 model。与之前一样,数据已预加载为 predictors 和 target。
本练习是课程的一部分
Python 深度学习入门
练习说明
- 从
tensorflow.keras.callbacks导入EarlyStopping。 - 编译模型,仍然使用
'adam'作为optimizer,'categorical_crossentropy'作为损失函数,并设置metrics=['accuracy']以在每个 epoch 查看准确率。 - 创建名为
early_stopping_monitor的EarlyStopping对象。通过将EarlyStopping()的patience参数设为2,在验证集损失 2 个 epoch 未提升时停止优化。 - 使用
predictors和target拟合模型。将epochs设为30,并使用0.3的验证集划分。此外,将[early_stopping_monitor]传入callbacks参数。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Import EarlyStopping
____
# Save the number of columns in predictors: n_cols
n_cols = predictors.shape[1]
input_shape = (n_cols,)
# Specify the model
model = Sequential()
model.add(Dense(100, activation='relu', input_shape = input_shape))
model.add(Dense(100, activation='relu'))
model.add(Dense(2, activation='softmax'))
# Compile the model
____
# Define early_stopping_monitor
early_stopping_monitor = ____
# Fit the model
____