Лучшая модель не сохраняется даже после добавления колбэков - PullRequest
0 голосов
/ 21 апреля 2019

Несмотря на выполнение предложенных шагов по сохранению лучшей модели путем добавления обратных вызовов к model.fit, файл h5 не сохраняется.Остальные вещи вроде эпохи работают хорошо.

# fit model
callbacks = [EarlyStopping(monitor='val_loss', patience=10),
             ModelCheckpoint(filepath='best_model.h5', 
             monitor='val_loss', save_best_only=True)]

model.fit(X, y, batch_size=128, epochs=300,callbacks=callbacks,verbose=1)

1 Ответ

0 голосов
/ 21 апреля 2019

Используйте

model.fit(X, y, batch_size=128, validation_split=0.1, 
                 epochs=300,callbacks=callbacks,verbose=1)

Ошибка: Ваш ModelCheckpoint основан на val_loss, т. Е. Каждый раз, когда он находит лучшую (в данном случае минимальную) потерю проверки, он сохраняет модель. Однако, когда вы подгоняете модель, вы не передаете никакие данные для проверки. Это означает, что потери при проверке не рассчитываются, поэтому модель не сохраняется.

В приведенном выше коде validation_split=0.1 использует 10% от (X, y) в качестве данных проверки.

Также обратите внимание, что другой обратный вызов EarlyStopping также основан на val_loss, поэтому без данных проверки он не сможет выполнить раннюю остановку. Поэтому либо вручную передайте данные проверки в метод fit, либо используйте случайное разбиение (X, y) в качестве данных проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...