【问题标题】:tensorflow:Can save best model only with val_loss availabletensorflow:只能在 val_loss 可用的情况下保存最佳模型
【发布时间】:2020-05-05 15:44:14
【问题描述】:

我看到有人提出了类似的问题,但 val_acc 未显示可用。我已经尝试了针对该案例列出的解决方案。

我的意思是我检查了历史记录中的键,并且“val_loss”作为键之一存在。我还传递了一个验证数据,所以它不会因为没有传入验证数据而引发错误。注意:我之前使用了 1000 个 epoch,我现在只是使用 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】:

    如果您的意思是要在某个 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中的回调。 我希望这会有所帮助。

    【讨论】:

    • 如果不清楚,抱歉。我的意思是我收到一条错误消息,指出 val_loss 不可用,因此不会保存权重。
    猜你喜欢
    • 2020-08-13
    • 2021-11-28
    • 2021-12-29
    • 2018-06-27
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2019-07-27
    • 2020-12-03
    相关资源
    最近更新 更多