Я тренирую LSTM, и для части эпох (диапазон не соответствует) во время обучающей последовательности из 300 эпох он демонстрирует очень хорошую точность в течение значительного периода времени. Я хочу иметь возможность сохранить всю модель на этом этапе, но, похоже, не могу найти способ сделать это, кроме как использовать контрольные точки, а затем восстановить и сохранить новую модель.
Есть ли способ использовать model.save для захвата модели только тогда, когда она имеет лучший вес?
@user14518362 user14518362 Как и в случае с контрольными точками, я надеюсь сэкономить на основе потери проверки или какой-либо аналогичной метрики.
Сейчас это не имеет особого значения, так как у вас есть ответ, но моя точка зрения была больше о том, как потеря проверки или другая метрика, которую вы хотели бы, можно было рассчитать только после обучения, и поэтому это не будет сильно отличаться от наличия контрольной точки после каждого эпоха
Используйте аргумент save _best_only
:
model_checkpoint_callback = tf.keras.callbacks.ModelCheckpoint(
filepath=checkpoint_filepath,
save_weights_only=True,
monitor='val_accuracy',
mode='max',
save_best_only=True)
Как-то я пропустил аргумент save_weights_only, для которого можно установить значение true, чтобы сохранить всю модель. Спасибо.
Как вы узнаете, что ваша модель имеет лучшие веса перед следующими шагами? Я чувствую, что если бы вы хотели использовать model.save таким образом, вы могли бы делать это каждую эпоху и сохранять ее только в том случае, если результаты лучше, чем в последние предыдущие эпохи, но это было бы похоже на то, как вы реализуете контрольные точки.