【问题标题】:Early stop using validation callback提前停止使用验证回调
【发布时间】:2020-11-16 11:11:47
【问题描述】:

我正在尝试使用验证 (val_loss) 进行回调,但没有进行验证。此警告显示为“警告:tensorflow:提前停止以不可用的指标 val_loss 为条件。可用指标为:损失、准确性”

`check=callbacks.EarlyStopping(monitor='val_accuracy', mode='auto',patience=2,verbose=1)
 
 history = model.fit(train_dataset,
                          steps_per_epoch=163,
                          epochs=10,
                          validation_data=val_dataset,
                          validation_steps=624,
                          callbacks = [check])`

【问题讨论】:

  • 您是否尝试跳过 validation_steps 参数?您的数据的长度/大小是多少?在我看来,您的 validation_steps 参数可能高于您可用的验证数据的实际大小(val_dataset,如您所定义)
  • 你能添加你的model.compile语句吗?以及使错误重现成为可能的完整代码。
  • 谢谢,@IvanPetrovicMarkovic 我删除了validation_steps,它起作用了。尽管我仅将validation_steps 计算为len/size。

标签: python tensorflow keras tf.keras


【解决方案1】:

在此处提供解决方案(回答部分),即使它出现在评论部分为了社区的利益

如果我们删除参数validation_steps,上面包含Early Stoppingmodel.fit 的代码可以正常工作。

工作代码如下所示:

check=callbacks.EarlyStopping(monitor='val_accuracy', mode='auto',patience=2,verbose=1)
 

history = model.fit(train_dataset,
                              steps_per_epoch=163,
                              epochs=10,
                              validation_data=val_dataset,
                              callbacks = [check])

原因可以从参数对应的Tensorflow Documentation中理解,validation_steps如下图:

validation_steps: 仅当提供了validation_data 并且是tf.data 数据集时才相关。步骤总数(样本批次)到 在每个结束时执行验证时在停止之前绘制 时代。如果 'validation_steps' 为 None,则验证将一直运行到 validation_data 数据集已用尽。在无限的情况下 重复数据集,它将陷入无限循环。如果 'validation_steps' 被指定并且只有部分数据集将被 消耗,评估将从数据集的开头开始 在每个时代。这确保使用相同的验证样本 每次。

【讨论】:

    猜你喜欢
    • 2018-05-17
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2016-03-29
    • 2019-03-18
    相关资源
    最近更新 更多