我正在尝试在 keras 中训练模型,并且正在使用ModelCheckpoint根据受监控的验证指标(在我的情况下为Jaccard index)保存最佳模型。
虽然我可以看到模型在张量板上有所改进,但当我尝试加载权重并评估模型时,它根本不起作用。此外,通过应该存储权重的文件上的时间戳,我可以看出它们根本没有被保存。时间戳大致对应于我开始训练的时间。
有没有人遇到过这样的问题?
我正在尝试在 keras 中训练模型,并且正在使用ModelCheckpoint根据受监控的验证指标(在我的情况下为Jaccard index)保存最佳模型。
虽然我可以看到模型在张量板上有所改进,但当我尝试加载权重并评估模型时,它根本不起作用。此外,通过应该存储权重的文件上的时间戳,我可以看出它们根本没有被保存。时间戳大致对应于我开始训练的时间。
有没有人遇到过这样的问题?
您是否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'
就确定了。