Как сохранить как лучшую, так и новейшую модель в керасе? - PullRequest
0 голосов
/ 09 июля 2019

Я хочу использовать Keras Model обратный вызов контрольной точки, чтобы сохранить как лучшую модель, так и последнюю модель. Есть ли способ сделать это, не включая создание нового класса ModelCheckpoint и изменение функции on_epoch_end?

Контрольная точка, которую я сейчас использую:

checkpter = keras.callbacks
    .ModelCheckpoint(checkpoint_dir + 'checkpt_{epoch:02d} + _.hdf5', monitor='val_loss',
                     verbose=1, save_best_only=True, save_weights_only=True, mode='auto',
                     period=1)

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Если под последней моделью вы подразумеваете модель после последней эпохи, вы можете просто оставить функцию Checkpoint без изменений и сохранить ваш конечный результат.

После того, как вы подгоните модель, добавьте следующую строку кода:

model.save('my_model.h5')

Функция контрольной точки сохранит лучшую модель, а после окончания тренировки модель сохранит один последний раз, независимо от результата.

0 голосов
/ 09 июля 2019

Вы можете создать новую функцию callback для сохранения моделей в каждой эпохе.

class saveLatesModel(keras.callbacks.Callback):
    def __init__(self, modelSaveLocation='', modelName=''):
        super(keras.callbacks.Callback, self).__init__()
        self.modelSaveLocation = '..'
        self.modelName = '..'

    def on_epoch_end(self, epoch, logs={}):
        self.model.save(self.modelSaveLocation+self.modelName+'.hdf5', overwrite=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...