在Keras中保存模型h5会降低精度表现。

4

我使用Keras开发/实现了一个CNET,其中在

 model.fit()

我已经正确保存了模型:

 model.save('my_model_CNET32.h5')

如果在训练过程结束时未保存模型,使用测试数据集进行性能测试会得到99%的准确率,但是如果保存模型并使用以下方式重新加载:

 model = load_model('my_model_CNET32.h5')

在一个专门用于测试的新脚本中,根据CNET所了解到的,我获得了70%的成绩。

请注意,显然,测试数据集完全相同,我可以推断出分类性能较低是由于未能成功保存模型导致的。

您知道这个问题的原因吗?

提前致谢


你是否在使用Keras提供的.evaluate()函数?如果是,你能否使用.predict()和手动计算误差来构建自己的函数?我记得如果样本数量不是批量大小的倍数,evaluate会出现一些奇怪的问题。 - pietz
1
在Keras论坛上似乎有一个(无休止的...)关于这个问题的讨论:model.save和load给出不同的结果 - desertnaut
1个回答

0

这是我在CNET上遇到的类似问题。

  • Keras以错误的方式将模型保存为.h5格式。虽然.h5格式仍然受到Keras的支持,但通过查看开发人员指南,似乎最好将模型保存在新的SavedModel格式中,因为它保存了从架构到模型优化器状态的所有内容。

  • 在模型的compile方法中没有指定正确的准确度指标。这是我从以下两个问题中发现的:

    1. 加载模型后Keras给出低准确度
    2. 保存/加载后准确度丢失

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接