在一个深度模型中,我在 Keras 中使用了如下的早期停止技术:
from keras.callbacks import EarlyStopping
early_stopping = [EarlyStopping(monitor='val_loss',
min_delta=0,
patience=2,
verbose=2, mode='auto')]
model.fit(train_x, train_y, batch_size=batch_size,
epochs=epochs, verbose=1,
callbacks=early_stopping,
validation_data=(val_x, val_y))
model.fit(train_x, train_y, batch_size=batch_size,
epochs=epochs, verbose=2,
callbacks=early_stopping,
validation_data=(val_x, val_y))
现在,当我运行此代码时,它会在输出中打印每个时期的训练和验证的损失值。
我设置patience=2在早期停止。因此,当验证损失增加而不是减少时,它会继续训练过程两次。
像这样的一些事情:
Epoch 1/10
- 198s - loss: 99.7160 - val_loss: 123.0397
Epoch 2/10
- 204s - loss: 78.7000 - val_loss: 109.0344
Epoch 3/10
- 208s - loss: 65.4412 - val_loss: 78.0097
Epoch 4/10
- 268s - loss: 61.9812 - val_loss: 79.0312
Epoch 5/10
- 298s - loss: 59.1124 - val_loss: 79.3397
Epoch 6/10
- 308s - loss: 57.2200 - val_loss: 218.0397
Epoch 00007: early stopping
最后,模型的最终权重和损失值是多少?最后一次训练还是之前的两次呢?
如果考虑到最后一个epoch,那么我是否应该尽可能少地设置耐心以克服过度拟合?
谢谢