当网络完全收敛时停止 Keras 训练

Aly*_*ono 7 python machine-learning training-data neural-network keras

我将如何配置 Keras 以停止训练直到收敛或损失为 0?我故意想要过度拟合它。我不想设置时代数。我只是想让它在收敛时停止。

Dan*_*ler 13

使用EarlyStopping回调。您可以自由选择要观察的损失/指标以及何时停止。

通常,您会查看“验证损失” ( val_loss),因为这是表明您的模型仍在学习泛化的最重要变量。

但是既然你说要过拟合,那你就可以看看“训练损失”( loss)了。

回调适用于“deltas”,而不是绝对值,这很好,因为损失不一定以“零”为目标。但是您可以使用baseline参数来设置绝对值。

所以,通常,一个查看验证损失的回调:

from keras.callbacks import EarlyStopping
usualCallback = EarlyStopping()
Run Code Online (Sandbox Code Playgroud)

这与 EarlyStopping(monitor='val_loss', min_delta=0, patience=0)

一种会过拟合的:

overfitCallback = EarlyStopping(monitor='loss', min_delta=0, patience = 20)
Run Code Online (Sandbox Code Playgroud)

注意patience争论,这很重要,因为损失值并不总是在每个时期都减少。让模型在结束前继续尝试几个 epoch。

最后,只需将回调传递给fit大量纪元:

model.fit(X, Y, epochs=100000000, callbacks=[overfitCallback])
Run Code Online (Sandbox Code Playgroud)