You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置多评估指标的Keras模型加载时报ValueError错误求助

解决方案

报错核心原因

你遇到的报错是因为加载模型时传入的custom_objects配置不符合要求,和你配置了多个评估指标没有直接关联:

  1. 你自定义的三个指标函数是无意义的空实现,不符合Keras指标的序列化/反序列化规范
  2. custom_objects的键值映射未匹配训练时使用的指标类标识

修复后的加载代码

不需要自行伪造指标实现,直接引入训练时使用的对应指标类传入custom_objects即可:

from keras.models import load_model
import tensorflow as tf
import tensorflow_addons as tfa

model_new = load_model(
    "CNN_model_fit_1.2",
    custom_objects={
        "BinaryAccuracy": tf.keras.metrics.BinaryAccuracy,
        "HammingLoss": tfa.metrics.HammingLoss,
        "F1Score": tfa.metrics.F1Score
    }
)

如果上述配置仍提示找不到自定义对象,可以用全局自定义对象作用域包裹加载逻辑,兼容性更强:

from keras.models import load_model
from tensorflow.keras.utils import custom_object_scope
import tensorflow as tf
import tensorflow_addons as tfa

with custom_object_scope({
    "BinaryAccuracy": tf.keras.metrics.BinaryAccuracy,
    "HammingLoss": tfa.metrics.HammingLoss,
    "F1Score": tfa.metrics.F1Score
}):
    model_new = load_model("CNN_model_fit_1.2")

注意事项

  • 不要用空函数替代原生指标实现,会导致加载后模型的指标计算结果完全错误
  • 单指标和多指标场景的custom_objects配置逻辑完全一致,仅需要把所有用到的非Keras内置的指标、自定义层、损失函数都加入映射字典即可
  • 如果是自行实现的自定义指标,需要在类中实现get_config方法,保证模型保存时可以正常序列化指标配置

内容的提问来源于stack exchange,提问作者hideonbush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:45:07