РЕДАКТИРОВАТЬ
Не работает, потому что вы поместили параметр callback
в неправильный вызов метода. (и на самом деле я получил недопустимую ошибку аргумента при подборе модели с callbacks
, переданным compile
. Поэтому я не уверен, почему ваша модель скомпилирована без проблем.)
Она должна быть внутри вашей fit
метод, как показано ниже. Обратите внимание, что в конфигурации ранней остановки рекомендуется установить verbose = 1
, чтобы распечатать журнал ранней остановки.
early_stopping = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=3, min_delta = 0.1, verbose = 1)
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
EPOCHS = 100
history = model.fit(training_batches,
epochs=EPOCHS,
callbacks=[early_stopping], # call back should be here!
validation_data=validation_batches)
По второму вопросу возможен пользовательский обратный вызов, вы можете обратиться к пример из документации здесь . По сути, вы должны определить свою логику раннего останова c в on_epoch_end
.
Кстати, я думаю, вам не следует рано останавливаться на нескольких метриках, выберите тот, который имеет значение (то есть метрику c что вы оптимизируете - val_accuracy
) и просто следите за этим. Есть даже источники, которые препятствуют ранней остановке, и вместо этого рассматривают эпоху как настраиваемый гиперпараметр. Смотрите эту ветку обсуждения на Reddit , что я нашел полезным.