tenorflow: может сохранить лучшую модель только с доступным val_loss - PullRequest
1 голос
/ 05 мая 2020

Я видел, что были заданы похожие вопросы с val_a cc не показано доступным. Я пробовал решения, перечисленные для этого случая.

Я имею в виду, что я проверил ключи в истории, и val_loss существует как один из ключей. Я также передаю данные проверки, поэтому это не вызывает ошибки из-за того, что данные проверки не передаются. Примечание: я использовал 1000 эпох, сейчас я просто использую 1 для быстрого тестирования. Что бы я ни делал, я не могу заставить свою модель учиться, и это вызывает ошибку, снова и снова упоминает название на каждом этапе. Я относительно новичок в Keras, поэтому я хотел спросить, не кажется ли вам что-то неправильным в реализации ниже. Если нет, я был бы признателен за любую помощь с указанием возможных причин, которые могли вызвать проблему.

    checkpoint = ModelCheckpoint("rcnn_model", monitor='val_loss', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', save_freq=1)
    early_stop = EarlyStopping(monitor='val_loss', min_delta=0, patience=100, verbose=1, mode='auto')

    trdata = ImageDataGenerator(horizontal_flip=True, vertical_flip=True, rotation_range=90)
    traindata = trdata.flow(x=datasets.train_X, y=datasets.train_Y)
    tsdata = ImageDataGenerator(horizontal_flip=True, vertical_flip=True, rotation_range=90)
    testdata = tsdata.flow(x=datasets.test_X, y=datasets.test_Y)

    hist = model.fit_generator(generator= traindata, steps_per_epoch= 10, epochs= 1, validation_data= testdata, validation_steps=2, callbacks=[checkpoint,early_stop])

1 Ответ

0 голосов
/ 05 мая 2020

Если вы имеете в виду, что хотите остановить обучение при определенном cc, вы можете остановить обучение модели, когда val.a cc поднимется до точки, которую вы определяете, набрав этот код:

Class MyCallBack(tensorflow.keras.callbacks.Callback):
    def on_epoch_end(self, epoch, logs={}):
        if(logs.get("val_accuracy")>0.95): # you can change the value
            self.model.stop_training=True

Newcb = MyCallBack()

Затем используйте переменную, назначенную классу, в качестве обратного вызова в model.fit. Надеюсь, это поможет.

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