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

Keras使用load_model加载LSTM模型报错Unknown activation function: LeakyReLU

报错原因

该错误的核心是你在输出层使用了带自定义参数的LeakyReLU作为激活函数,Keras的load_model方法默认不会自动识别这类非内置字符串别名的带参数激活函数,加载时找不到对应实现就会抛出未知激活函数的错误。

解决方法
  • 方案1:加载时通过custom_objects参数手动传入LeakyReLU
    这是无需修改原有训练代码、最快的临时解决方案,加载时指定自定义对象即可,示例代码:
from tensorflow.keras.models import load_model
from tensorflow.keras.layers import LeakyReLU

model = load_model('model_LSTM.h5', custom_objects={'LeakyReLU': LeakyReLU})
  • 方案2:训练时将LeakyReLU拆分为独立层(一劳永逸,后续加载无需额外参数)
    你之前的写法是把LeakyReLU直接作为Dense层的activation参数传入,改成单独新增一层激活层,保存的模型会自带层定义,后续加载不需要额外传参,修改后的输出层代码如下:
# 原有写法
# output = Dense(1, activation= LeakyReLU(alpha=0.1),name="class")(drop_out)
# 替换为以下写法
dense_out = Dense(1, name="class")(drop_out)
output = LeakyReLU(alpha=0.1)(dense_out)

修改后重新训练保存的模型,后续直接调用load_model('model_LSTM.h5')即可正常加载。

  • 方案3:使用激活函数字符串别名(仅适用于不需要修改默认参数的场景)
    如果你不需要自定义LeakyReLU的alpha值,使用默认的0.3参数的话,可以直接在Dense层的activation参数传入字符串'leaky_relu',Keras可以自动识别,后续加载也不会报错:
output = Dense(1, activation='leaky_relu', name="class")(drop_out)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:57:02