Используйте обратный вызов EarlyStopping .Вы можете свободно выбирать, какую потерю / метрику наблюдать и когда останавливать.
Обычно вы смотрите на «потерю проверки» (val_loss
), так как это самая важная переменная, которая говорит о том, что ваша модельвсе еще учится обобщать.
Но так как вы сказали, что хотите переодеться, вы можете посмотреть на «потерю тренировок» (loss
).
Обратный вызов работает с «дельтами», а не с абсолютными значениями, что хорошо, потому что потеря не обязательно имеет «ноль» в качестве своей цели.Но вы можете использовать аргумент 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
вместе с огромным количеством эпох:
model.fit(X, Y, epochs=100000000, callbacks=[overfitCallback])