【问题标题】:Keras LSTM - Why my Earlystopping function didn't work?Keras LSTM - 为什么我的 Earlystopping 功能不起作用?
【发布时间】:2020-08-03 03:29:41
【问题描述】:

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

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

我目前使用 5 个批量进行训练,每次拟合由 350 个 epoch 组成。现在我想使用 Earlystopping 在最接近的训练和验证准确度时期停止,但尚未成功。

我尝试将监视器“val_acc”设置为至少达到基线值 0.8,然后添加 min_delta = 0.01,以期仅在达到基线后应用此规则,但这没有帮助。加了早停功能后,为什么还没达到基线就这么早停了?每次我改变耐心时,训练都会停止在“那个”耐心。

这是我的代码。

#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)

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

谢谢!

【问题讨论】:

    标签: python machine-learning keras lstm early-stopping


    【解决方案1】:

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

    请参阅here 了解简单说明。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      相关资源
      最近更新 更多