Keras LSTM - 为什么我的 Earlystopping 函数不起作用?

Keras LSTM - Why my Earlystopping function didn't work?

我是深度学习和Keras新手,想尝试让我的模型分类更准确。因为只有75个数据,所以我把60个用来训练,15个用来验证(80/20),所以很容易过拟合。我尝试添加更多层、更多单元、减少层、单元、增加和减少学习率等以获得更好的性能。

根据之前的运行,我知道我的 val_acc 在大约 100-150 个 epoch 后下降到 0.8,所以我想在那个时候停止训练以避免下降。

我目前训练的批量大小为 5,每次拟合由 350 个时期组成。现在我想使用 Earlystopping 在最近的训练和验证精度 epoch 停止,但还没有成功。

我尝试设置监视器'val_acc'至少达到基线值是0.8,然后添加一个min_delta = 0.01期望这个规则只会在基线被应用后达到了,但是那没有帮助。加入早停功能后,为什么还没到基线就早早停了?每次我改变耐心时,训练都会在 "THAT" 耐心处停止。

这是我的代码。

#early stopping
from Keras.callbacks import EarlyStopping
early_stopping= keras.callbacks.EarlyStopping(monitor='val_acc', min_delta=0.01, patience=5, verbose=0, mode='max', baseline=0.8, restore_best_weights=False)

train_history =model.fit(X_train, train_Label,batch_size=5,
                         epochs=300,verbose=2,callbacks=[early_stopping],
                         validation_split=0.2)

为什么没有达到基线就这么早停止了?这有什么原因吗?我应该如何调整功能以满足我的期望?或者是否有任何好的做法可以用来获得最高的验证准确性?

谢谢!

如果在您的耐心数达到时未达到基线准确度,您的模型将停止训练。基线适用于当事情没有按计划进行时您不想继续训练的情况。

有关简单说明,请参阅 here

删除基线,您的模型将在需要时停止。同样在您的代码片段中,您有 delta = 0,仅供参考。