tensorflow:只有在val_loss可用的情况下才能保存最佳模型。

问题描述 投票:0回答:1

我看到有类似的问题,问的是val_acc不显示可用。我已经尝试了针对这种情况的解决方案。

我的意思是我检查了历史记录中的键,"val_loss "作为其中一个键存在。我也传递了一个验证数据,所以它不会因为没有传递验证数据而引发错误。注意:我之前使用的是1000个epoches,我现在只是用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])
tensorflow keras training-data
1个回答
0
投票

如果你的意思是你想停止训练在某一个acc,你可以停止训练模型,因为val.acc提高到一个点,你定义的输入这个代码。

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中使用分配给该类的变量作为回调,希望对你有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.