tf.keras.callbacks.ModelCheckpoint
Обработчик для сохранения модели Keras или весов модели с определённой частотой.
Наследуется от: Callback
tf.keras.callbacks.ModelCheckpoint(
filepath,
monitor='val_loss',
verbose=0,
save_best_only=False,
save_weights_only=False,
mode='auto',
save_freq='epoch',
initial_value_threshold=None
)
Используется в ноутбуках
| Используется в руководстве | Используется в учебниках |
|---|---|
ModelCheckpoint обработчик используется совместно с обучением, используя model.fit(), для сохранения модели или весов (в файле контрольной точки) с некоторым интервалом, чтобы модель или веса могли быть загружены позже для продолжения обучения из сохранённого состояния.
Некоторые возможности этого обработчика включают:
- Сохранять только модель, которая достигла наилучшей производительности до сих пор, или сохранять модель в конце каждой эпохи независимо от производительности.
- Определение "наилучшей"; какой показатель отслеживать и нужно ли его максимизировать или минимизировать.
- Частота сохранения. В настоящее время обработчик поддерживает сохранение в конце каждой эпохи или после фиксированного количества итераций обучения.
- Сохранять только веса или всю модель.
Пример:
model.compile(loss=..., optimizer=...,
metrics=['accuracy'])
EPOCHS = 10
checkpoint_filepath = '/tmp/ckpt/checkpoint.model.keras'
model_checkpoint_callback = keras.callbacks.ModelCheckpoint(
filepath=checkpoint_filepath,
monitor='val_accuracy',
mode='max',
save_best_only=True)
# Model is saved at the end of every epoch, if it's the best seen so far.
model.fit(epochs=EPOCHS, callbacks=[model_checkpoint_callback])
# The model (that are considered the best) can be loaded as -
keras.models.load_model(checkpoint_filepath)
# Alternatively, one could checkpoint just the model weights as -
checkpoint_filepath = '/tmp/ckpt/checkpoint.weights.h5'
model_checkpoint_callback = keras.callbacks.ModelCheckpoint(
filepath=checkpoint_filepath,
save_weights_only=True,
monitor='val_accuracy',
mode='max',
save_best_only=True)
# Model weights are saved at the end of every epoch, if it's the best seen
# so far.
model.fit(epochs=EPOCHS, callbacks=[model_checkpoint_callback])
# The model weights (that are considered the best) can be loaded as -
model.load_weights(checkpoint_filepath)
| Аргументы | |
|---|---|
filepath | строка или PathLike, путь к сохранению файла модели. filepath может содержать именованные параметры форматирования, которые будут заполнены значением epoch и ключами в logs (переданными в on_epoch_end). Имя filepath должно заканчиваться на ".weights.h5" при сохранении save_weights_only=True или должно заканчиваться на ".keras" при сохранении всей модели (по умолчанию). Например, если filepath равно "{epoch:02d}-{val_loss:.2f}.keras", то контрольные точки модели будут сохраняться с номером эпохи и потерей на валидации в имени файла. Каталог пути к файлу не должен повторно использоваться другими обработчиками, чтобы избежать конфликтов. |
monitor | Имя метрики для отслеживания. Обычно метрики устанавливаются методом Model.compile. Примечание:
|
verbose | Режим отображения, 0 или 1. Режим 0 — без вывода сообщений, режим 1 — вывод сообщений, когда обработчик выполняет действие. |
save_best_only | если save_best_only=True, сохраняется только тогда, когда модель считается "лучшей", и самая последняя лучшая модель по отслеживаемому показателю не будет перезаписана. Если filepath не содержит опций форматирования, таких как {epoch}, то filepath будет перезаписываться каждой новой лучшей моделью. |
mode | одно из {"auto", "min", "max"}. Если save_best_only=True, решение о перезаписи текущего сохранённого файла принимается на основе максимизации или минимизации отслеживаемого показателя. Для val_acc, это должно быть "max", для val_loss, это должно быть "min" и т.д. В режиме "auto" режим устанавливается в "max", если отслеживаемые величины являются "acc" или начинаются с "fmeasure", и устанавливается в "min" для остальных величин. |
save_weights_only | если True, то сохраняются только веса модели (model.save_weights(filepath)), иначе сохраняется вся модель (model.save(filepath)). |
save_freq | целое число или строка. При использовании строки, обработчик сохраняет модель после каждой эпохи. При использовании целого числа, обработчик сохраняет модель в конце указанного количества итераций. Если Model скомпилирован с steps_per_execution=N, то критерии сохранения будут проверяться каждые N итераций. Обратите внимание, что если сохранение не выровнено по эпохам, отслеживаемая метрика может быть потенциально менее надёжной (она может отражать всего 1 итерацию, так как метрики сбрасываются в конце каждой эпохи). По умолчанию "epoch". |
initial_value_threshold | Вещественное значение начального "лучшего" значения отслеживаемой метрики. Применяется только если save_best_value=True. Перезаписывает уже сохранённые веса модели только в том случае, если производительность текущей модели лучше, чем это значение. |
| Атрибуты | |
|---|---|
model | |
Методы
on_batch_begin
on_batch_begin(
batch, logs=None
)
Псевдоним обратной совместимости для on_train_batch_begin.
on_batch_end
on_batch_end(
batch, logs=None
)
Псевдоним обратной совместимости для on_train_batch_end.
on_epoch_begin
on_epoch_begin(
epoch, logs=None
)
Вызывается в начале эпохи.
Подклассы должны переопределять для выполнения любых действий. Эта функция должна вызываться только во время режима ОБУЧЕНИЯ.
| Аргументы | |
|---|---|
epoch | Целое число, индекс эпохи. |
logs | Словарь. В настоящее время данные не передаются в этот аргумент для этого метода, но это может измениться в будущем. |
on_epoch_end
on_epoch_end(
epoch, logs=None
)
Вызывается в конце эпохи.
Подклассы должны переопределять для выполнения любых действий. Эта функция должна вызываться только во время режима ОБУЧЕНИЯ.
| Аргументы | |
|---|---|
epoch | Целое число, индекс эпохи. |
logs | Словарь, результаты метрик для этой эпохи обучения и для эпохи валидации, если она выполняется. Ключи результатов валидации имеют префикс val_. Для эпохи обучения возвращаются значения метрик Model. Пример: {'loss': 0.2, 'accuracy': 0.7}. |
on_predict_batch_begin
on_predict_batch_begin(
batch, logs=None
)
Вызывается в начале итерации в методах predict.
Подклассы должны переопределять для выполнения любых действий.
Обратите внимание, что если аргумент steps_per_execution к методу compile в Model установлен в N, этот метод будет вызываться только каждые N партии.
| Аргументы | |
|---|---|
batch | Целое число, индекс партии в текущей эпохе. |
logs | Словарь. В настоящее время в этот аргумент для данного метода данные не передаются, но это может измениться в будущем. |
on_predict_batch_end
on_predict_batch_end(
batch, logs=None
)
Вызывается в конце партии в методах predict.
Подклассы должны переопределять для выполнения любых действий.
Обратите внимание, что если аргумент steps_per_execution к методу compile в Model установлен в N, этот метод будет вызываться только каждые N партии.
| Аргументы | |
|---|---|
batch | Целое число, индекс партии в текущей эпохе. |
logs | Словарь. Суммарные результаты метрик до этой партии. |
on_predict_begin
on_predict_begin(
logs=None
)
Вызывается в начале прогнозирования.
Подклассы должны переопределять для выполнения любых действий.
| Аргументы | |
|---|---|
logs | Словарь. В настоящее время в этот аргумент для данного метода данные не передаются, но это может измениться в будущем. |
on_predict_end
on_predict_end(
logs=None
)
Вызывается в конце прогнозирования.
Подклассы должны переопределять для выполнения любых действий.
| Аргументы | |
|---|---|
logs | Словарь. В настоящее время в этот аргумент для данного метода данные не передаются, но это может измениться в будущем. |
on_test_batch_begin
on_test_batch_begin(
batch, logs=None
)
Вызывается в начале партии в методах evaluate.
Также вызывается в начале партии валидации в методах fit, если предоставлены данные валидации.
Подклассы должны переопределять для выполнения любых действий.
Обратите внимание, что если аргумент steps_per_execution к методу compile в Model установлен в N, этот метод будет вызываться только каждые N партии.
| Аргументы | |
|---|---|
batch | Целое число, индекс партии в текущей эпохе. |
logs | Словарь. В настоящее время в этот аргумент для данного метода данные не передаются, но это может измениться в будущем. |
on_test_batch_end
on_test_batch_end(
batch, logs=None
)
Вызывается в конце партии в методах evaluate.
Также вызывается в конце партии валидации в методах fit, если предоставлены данные валидации.
Подклассы должны переопределять для выполнения любых действий.
Обратите внимание, что если аргумент steps_per_execution к методу compile в Model установлен в N, этот метод будет вызываться только каждые N партии.
| Аргументы | |
|---|---|
batch | Целое число, индекс партии в текущей эпохе. |
logs | Словарь. Суммарные результаты метрик до этой партии. |
on_test_begin
on_test_begin(
logs=None
)
Вызывается в начале оценки или валидации.
Подклассы должны переопределять для выполнения любых действий.
| Аргументы | |
|---|---|
logs | Словарь. В настоящее время в этот аргумент для данного метода данные не передаются, но это может измениться в будущем. |
on_test_end
on_test_end(
logs=None
)
Вызывается в конце оценки или валидации.
Подклассы должны переопределять для выполнения любых действий.
| Аргументы | |
|---|---|
logs | Словарь. В настоящее время в этот аргумент для данного метода передаётся результат последнего вызова on_test_batch_end(), но это может измениться в будущем. |
on_train_batch_begin
on_train_batch_begin(
batch, logs=None
)
Вызывается в начале обучающей партии в методах fit.
Подклассы должны переопределять для выполнения любых действий.
Обратите внимание, что если аргумент steps_per_execution к методу compile в Model установлен в N, этот метод будет вызываться только каждые N партии.
| Аргументы | |
|---|---|
batch | Целое число, индекс партии в текущей эпохе. |
logs | Словарь. В настоящее время в этот аргумент для данного метода данные не передаются, но это может измениться в будущем. |
on_train_batch_end
on_train_batch_end(
batch, logs=None
)
Вызывается в конце обучающей партии в методах fit.
Подклассы должны переопределять для выполнения любых действий.
Обратите внимание, что если аргумент steps_per_execution к методу compile в Model установлен в N, этот метод будет вызываться только каждые N партии.
| Аргументы | |
|---|---|
batch | Целое число, индекс партии в текущей эпохе. |
logs | Словарь. Суммарные результаты метрик до этой партии. |
on_train_begin
on_train_begin(
logs=None
)
Вызывается в начале обучения.
Подклассы должны переопределять для выполнения любых действий.
| Аргументы | |
|---|---|
logs | Словарь. В настоящее время в этот аргумент для данного метода данные не передаются, но это может измениться в будущем. |
on_train_end
on_train_end(
logs=None
)
Вызывается в конце обучения.
Подклассы должны переопределять для выполнения любых действий.
| Аргументы | |
|---|---|
logs | Словарь. В настоящее время в этот аргумент для данного метода передаётся результат последнего вызова on_epoch_end(), но это может измениться в будущем. |
set_model
set_model(
model
)
set_params
set_params(
params
)
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/ModelCheckpoint