我有以下问题。当我们教Keras NN时,我们会遇到
earlyStopping = EarlyStopping(
monitor='val_loss', patience=30, verbose=0, mode='auto')
results = model.fit_generator(
Generator(train_ids,
batch_size = TRAINING_BATCH_SIZE),
steps_per_epoch = STEPS_PER_EPOCH, # fill_in?
epochs = MAX_TRAIN_EPOCHS,
validation_data=Generator(valid_ids,
batch_size = VALIDATION_BATCH_SIZE),
validation_steps=VALIDATION_STEPS, # fill_in?
callbacks=[#checkpoint, # Commented as Kaggle does not save
earlyStopping #, plot_losses
])
现在,当损失停止改善时,此代码段将停止,但是... 假设是0.9、0.8、0.7、0.6、0.5、0.5、0.6 然后,当它停止时,我的NN是产生0.5(最佳)或0.6(最后)的那个?
换句话说,我应该在每个时期以及是否有新的最小值时继续测试损耗。达成,要保存NN,才能获得最好的?还是有一种自动进行的方法?
谢谢。
答案 0 :(得分:0)
我认为问题是:
1。如何保存最佳检查点?
您既可以手动保存,也可以使用keras回调,但是无论哪种方式,都需要一些度量标准来选择最佳的选择。
keras.callbacks.ModelCheckpoint(filepath,monitor ='val_loss', verbose = 0,save_best_only = False,save_weights_only = False,mode ='auto', 期间= 1)
那么,我是否需要继续在验证数据集上评估我的模型以找出最佳权重?
这取决于您如何选择最佳重量。通常,我们希望权重在验证数据集上表现最佳,因此您需要定期在验证数据集上评估模型,否则就不知道。