keras 的 ModelCheckpoint 不工作

数据挖掘 喀拉斯 卷积神经网络
2021-09-23 09:02:23

我正在尝试在 keras 中训练模型,并且正在使用ModelCheckpoint根据受监控的验证指标(在我的情况下为Jaccard index)保存最佳模型。

虽然我可以看到模型在张量板上有所改进,但当我尝试加载权重并评估模型时,它根本不起作用。此外,通过应该存储权重的文件上的时间戳,我可以看出它们根本没有被保存。时间戳大致对应于我开始训练的时间。

有没有人遇到过这样的问题?

1个回答

您是否ModelCheckpoint使用其默认参数(除了monitor)运行?

ModelCheckpoint有一个名为的参数mode,它指定要使用的度量类型mode可以取 3 个值'min' 'max''auto'(这是默认值):

  • min: 表示您想要最小化度量(例如损失函数)。
  • max: 表示您想要最大化指标(例如准确性)。
  • auto: 试图自己想办法做什么。如果您查看代码,它会检查指标的名称是否包含'acc'或是否以'fmeasure'. 如果是,则将模式设置为max,如果不是,则将其设置为min

在您的情况下,您监控 jaccard 索引,这是您希望最大化的指标,因此您希望将模式设置为max. 通常因为“jaccard”包含字符串“acc”,即使模式设置为auto它也应该可以正常工作。

但是,如果您将指标命名为任意名称(例如my_metric),则默认模式将设置为min,这意味着它将存储在您的指标上实现最低性能的权重,这应该是第一个 epoch 的权重。

建议:下次试试mode='max'就确定了。