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

Keras.models.load_model加载H5音频检测模型失败求助

解决Keras加载H5模型时的TypeError: tuple indices must be integers or slices, not list问题

这个问题我之前也碰到过,本质是旧版本Keras在序列化BatchNormalization层的axis参数时出现的bug——你代码里定义的axis=-1(整数)在保存模型时被错误序列化成了列表(比如[-1]),加载模型时解析这个参数就会触发类型错误。下面给你几个可行的解决方法:

方法一:自定义BatchNormalization修复加载逻辑

直接在加载模型时,通过自定义对象修复axis参数的解析问题,不需要重新训练模型:

from keras.layers import BatchNormalization
from keras.models import load_model

class FixedBatchNormalization(BatchNormalization):
    @classmethod
    def from_config(cls, config):
        # 检查axis是否被序列化为列表,若是则提取第一个元素转为整数
        if isinstance(config.get('axis'), list):
            config['axis'] = config['axis'][0]
        return super().from_config(config)

# 加载模型时传入自定义的BatchNormalization类
# 注意路径用原始字符串避免转义问题
model = load_model(r'.\Data\Keras_Model\(19.07.30).h5', 
                   custom_objects={'BatchNormalization': FixedBatchNormalization})

方法二:拆分模型结构与权重保存(推荐)

避开完整模型保存的序列化问题,分别保存模型结构和权重,加载时再组合:

重新保存模型(训练时修改保存逻辑)

# 保存模型结构为JSON文件
model_json = model.to_json()
with open(r'.\Data\Keras_Model\model_structure.json', 'w') as json_file:
    json_file.write(model_json)

# 保存模型权重
model.save_weights(r'.\Data\Keras_Model\model_weights.h5')

加载模型

from keras.models import model_from_json
from keras.optimizers import Adam

# 加载模型结构
with open(r'.\Data\Keras_Model\model_structure.json', 'r') as json_file:
    loaded_model_json = json_file.read()
loaded_model = model_from_json(loaded_model_json)

# 加载权重
loaded_model.load_weights(r'.\Data\Keras_Model\model_weights.h5')

# 重新编译模型(如果需要评估或继续训练)
adam = Adam(lr=0.01, beta_1=0.9, beta_2=0.999, decay=0.0)
loaded_model.compile(loss="binary_crossentropy", optimizer=adam, metrics=["accuracy"])

方法三:升级Keras到稳定版本

如果你的Keras版本比较旧(比如2.1.0之前),升级到最新的稳定版可以从根源上避免这个序列化bug:

pip install --upgrade keras

额外注意点

  • 路径中的反斜杠尽量用原始字符串前缀r''或者双反斜杠\\,避免转义字符引发的隐性问题;
  • 加载模型后如果要继续训练或评估,记得确认模型已经正确编译(方法二需要手动编译,方法一加载的模型会保留编译状态)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:41:10