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

Python中使用TensorFlow/Keras加载h5模型失败求助

解决Keras加载模型失败的问题

你的问题根源在于:你手里的model.h5.meta、model.h5.index、model.h5.data-00000-of-00001是TensorFlow Checkpoint检查点格式,不是Keras保存的单一.h5完整模型文件,所以keras.models.load_model()无法直接加载这类文件。

下面是两种可行的解决方法:

方法1:直接用TensorFlow Checkpoint恢复模型

需要先复现和训练时完全一致的模型结构,再通过Checkpoint加载权重:

import tensorflow as tf
from tensorflow import keras

# 复现训练时的模型结构(必须和训练代码完全一致)
def build_training_model():
    model = keras.Sequential([
        # 示例层,替换成你实际的模型层
        keras.layers.Dense(64, activation='relu', input_shape=(32,)),
        keras.layers.Dense(10, activation='softmax')
    ])
    return model

# 初始化模型
model = build_training_model()
# 创建Checkpoint对象,绑定要恢复的模型
checkpoint = tf.train.Checkpoint(model=model)
# 加载检查点,路径传入检查点前缀(即model.h5,无需加后缀)
# 若有部分变量未被恢复(如优化器状态),可加.expect_partial()避免报错
checkpoint.restore("./model.h5").expect_partial()

# 验证模型可用
# test_input = tf.random.normal((1, 32))
# print(model.predict(test_input))

方法2:转换为Keras完整.h5模型文件

如果需要用keras.models.load_model()加载,可以先加载权重到模型,再保存为完整Keras模型:

import tensorflow as tf
from tensorflow import keras

# 同样先复现模型结构
model = build_training_model()
# 加载Checkpoint权重
model.load_weights("./model.h5")
# 保存为完整Keras .h5模型
model.save("complete_model.h5")

# 之后即可用Keras加载
loaded_model = keras.models.load_model("complete_model.h5")

注意事项

  • 模型结构必须和训练时完全一致,包括输入形状、层类型、参数数量、激活函数等,否则会加载失败。
  • 建议统一使用tf.keras API,避免混用原生Keras和TensorFlow Keras导致兼容性问题。
  • 加载Checkpoint时,路径要传入检查点的前缀(如./model.h5),不要传入单个的.data或.meta文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:52:43