需要有关Keras网络停止训练的帮助

时间:2018-11-02 00:53:07

标签: python neural-network keras deep-learning

我有以下问题。当我们教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,才能获得最好的?还是有一种自动进行的方法?

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为问题是:

1。如何保存最佳检查点?

您既可以手动保存,也可以使用keras回调,但是无论哪种方式,都需要一些度量标准来选择最佳的选择。

  

keras.callbacks.ModelCheckpoint(filepath,monitor ='val_loss',   verbose = 0,save_best_only = False,save_weights_only = False,mode ='auto',   期间= 1)

那么,我是否需要继续在验证数据集上评估我的模型以找出最佳权重?

这取决于您如何选择最佳重量。通常,我们希望权重在验证数据集上表现最佳,因此您需要定期在验证数据集上评估模型,否则就不知道。