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

TensorFlow模型保存失败求助:KerasTensor序列化报错

Keras模型保存时KerasTensor序列化错误的解决方案

错误原因:
你的模型中包含未被Keras层封装的原生TensorFlow操作(比如报错里的tf.__operators__.getitem_10对应切片操作),这类操作生成的KerasTensor无法被H5格式的序列化器识别,导致保存失败。

修复方案:

  • 封装原生TF操作为Lambda层:把模型中直接使用的TensorFlow原生操作(比如数组索引、tf.strided_slice等)用tf.keras.layers.Lambda包裹,让Keras能正确追踪操作并序列化。示例:
    # 替换直接切片操作
    # 原代码:x = input_tensor[:, :80, :100, :1]
    # 修改后:
    x = tf.keras.layers.Lambda(lambda t: t[:, :80, :100, :1])(input_tensor)
    
  • 替换所有非Keras层操作:遍历模型结构,确保所有张量变换都通过Keras内置层或Lambda层实现,避免直接调用TensorFlow原生API操作张量。
  • 切换到SavedModel格式保存:如果不想修改模型结构,可使用TensorFlow原生的SavedModel格式保存,它对原生TF操作兼容性更好:
    # 直接保存为SavedModel格式
    model.save('model_path/saved_model')
    # 或显式指定格式
    tf.keras.models.save_model(model, 'model_path/saved_model', save_format='tf')
    

验证方法:
保存完成后可加载模型验证功能:

loaded_model = tf.keras.models.load_model('model_path/saved_model')
# 用测试数据验证输出一致性
test_pred = loaded_model.predict(test_input_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:52:12