如何配置Keras以停止训练,直到收敛或损失为0?我真想把它装得太大。我不想设定年代。我只是希望它在汇合时停止。

最佳答案

使用EarlyStopping回调。您可以自由选择要观察的损失/指标以及何时停止。
通常,您会看到“验证损失”(val_loss),因为这是最重要的var,它告诉您的模型仍在学习泛化。
但既然你说你想过度健身,那么你可能会看到“训练损失”(loss)。
回调使用“delta”,而不是绝对值,这很好,因为损失不一定以“0”为目标。但是可以使用baseline参数设置绝对值。
因此,通常是一个回调来查看验证丢失:

from keras.callbacks import EarlyStopping
usualCallback = EarlyStopping()

这与EarlyStopping(monitor='val_loss', min_delta=0, patience=0)
过大的:
overfitCallback = EarlyStopping(monitor='loss', min_delta=0, patience = 20)

注意paticence参数,这很重要,因为损失值并不总是在每个历元都会减少。让模型在结束之前再尝试几个时代。
最后,只需将回调传递给fit和大量的epoch:
model.fit(X, Y, epochs=100000000, callbacks=[overfitCallback])

08-25 05:45