tensorflow:只能在val_损失可用的情况下保存最佳模型

tensorflow:只能在val_损失可用的情况下保存最佳模型,tensorflow,keras,training-data,Tensorflow,Keras,Training Data,我看到有类似的问题询问val_acc,但没有显示。我已经尝试了针对该案例列出的解决方案 我的意思是我检查了历史记录中的密钥,“val_loss”作为密钥之一存在。我还传递了一个验证数据,因此它不会因为没有传递验证数据而引发错误。注意:我以前使用过1000个epoches,现在我正在使用1来快速测试。无论我做了什么,我似乎无法让我的模型学习,它在每一步都会一次又一次地引发标题中提到的错误。我对Keras比较陌生,所以我想问一下,在下面的实现中,你们是否觉得有什么地方不对。如果没有,我将感谢任何可能

我看到有类似的问题询问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])

如果您的意思是要在某个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中将分配给类的变量用作回调。
我希望这会有所帮助。

如果您的意思是要停止在某个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不可用,因此重量无法保存。哦,如果不清楚,很抱歉。我的意思是,我得到了一个错误,说明val_loss不可用,因此权重无法保存。