Есть ли способ сохранить модель в указанную эпоху в tf.keras? - PullRequest
0 голосов
/ 27 марта 2019

Используя tf.keras.callbacks, я могу автоматически сохранять лучшую модель, выбирая только один атрибут для мониторинга (как правило, точность проверки), но иногда мне нужно сохранять его в соответствии со сравнением проверки и точности обучения.,Как я могу это сделать?

Записывают ли файлы tf.keras.history вес модели в каждую эпоху?Если да, как я могу сохранить свою модель из файла истории, указав нужную эпоху?Это еще одно возможное решение.

Вот ситуация, с которой я сталкиваюсь: иногда моя точность проверки очень высока в раннюю эпоху (я полагаю, случайно), в то время как моя точность обучения все еще намного нижеЭто.Эта эпоха оказывается моделью, которая автоматически сохраняется.Это дрянная модель из-за ее низкой точности обучения, но она была спасена благодаря высокой точности проверки.Если бы он сохранился в месте, где встречаются точность обучения и проверки, это была бы довольно хорошая модель.Поэтому в каждую эпоху я предпочел бы сравнивать точность обучения и точность валидации, выбирать самую низкую из двух и выбирать исходя из этого свою лучшую модель.Любые предложения о том, как это сделать?

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Вы можете реализовать пользовательский обратный вызов следующим образом:

class CustomModelCheckpoint(tf.keras.callbacks.Callback):
    def on_epoch_end(self, epoch, logs=None):
        # logs is a dictionary
        print(f"epoch: {epoch}, train_acc: {logs['acc']}, valid_acc: {logs['val_acc']}")
        if logs['val_acc'] > logs['acc']: # your custom condition
            self.model.save('model.h5', overwrite=True)

cbk = CustomModelCheckpoint()
model.fit(....callbacks=[cbk]...)
0 голосов
/ 27 марта 2019

Оформление обратного вызова ModelCheckpoint на https://keras.io/callbacks/

. Вы можете сохранить модель для каждой эпохи и включить точность / валидность в имя файла (или впоследствии проверить объект истории).

...