0

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

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

使用早停之前

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

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

添加earlystopping后 这是我的代码。

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

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

谢谢!

4

1 回答 1

0

如果在达到您的耐心数量时未达到基线准确度,您的模型将停止训练。基线是当你不想在事情没有计划的情况下继续训练的时候。

有关简单说明,请参见此处

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

于 2020-04-20T20:49:41.773 回答