Остановите обучение Keras, когда сеть полностью сходится - PullRequest
0 голосов
/ 26 ноября 2018

Как я настрою Keras так, чтобы тренировка прекращалась до схождения или когда потеря была равна 0?Я намеренно хочу переодеть его.Я не хочу устанавливать количество эпох.Я просто хотел, чтобы это прекратилось, когда оно сходится.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

EarlyStopping сделает именно то, что вы хотите: он поможет вам прекратить тренировку, когда отслеживаемое количество (потеря) перестает улучшаться.Это делается с помощью параметра терпение , задающего количество эпох, после которого, если не наблюдается улучшения (~ возможная конвергенция), обучение следует прекратить.Информация об использовании EarlyStopping также может быть найдена в возможном дубликате .

. Также полезно для визуализации процесса обучения .

0 голосов
/ 26 ноября 2018

Используйте обратный вызов 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])
...