tensorflow:只有val_loss可用,才能保存最佳模型



我看到在val_acc不可用的情况下也有类似的问题。我已经尝试了针对该案例列出的解决方案。

我的意思是,我检查了历史记录中的密钥,"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])

如果你想在某个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中的回调。我希望这能有所帮助。

最新更新