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

使用Keras的load_model加载含PReLU的h5模型报错ValueError如何解决

报错根因

PReLU不属于Keras内置的基础激活函数集合,它本身是带可训练参数的层对象,模型序列化保存为.h5文件时不会自动记录该类的实现逻辑,因此加载时无法自动识别抛出该错误。

可行解决方案

按实际场景选择以下任意一种即可:

方案1:加载时显式传入自定义对象映射

最常用的临时解决方式,无需修改原有保存逻辑,仅加载时额外指定映射关系即可:

# 注意导入路径要和你训练模型时使用的PReLU导入路径完全一致
# 如果你训练时用的是tensorflow.keras,就用 from tensorflow.keras.layers import PReLU
from keras.layers import PReLU
from keras.models import load_model

model = load_model("your_model_path.h5", custom_objects={"PReLU": PReLU})

方案2:全局注册自定义对象

适合需要多次加载带PReLU的模型的场景,注册一次后后续所有加载操作都不需要额外传参数:

from keras.layers import PReLU
from keras.utils import get_custom_objects

# 全局注册PReLU类
get_custom_objects().update({"PReLU": PReLU})

# 后续直接正常加载即可
model = load_model("your_model_path.h5")
注意事项

训练时和加载时使用的PReLU导入路径必须完全匹配,如果你训练时用的是tensorflow.keras接口的PReLU,加载时就不能用独立Keras库的keras.layers.PReLU,否则仍然会识别失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:45:02