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

无法将训练后的Keras模型转换为TensorFlow Lite 求解决方案

解决TensorFlow Lite模型转换失败问题

问题根源

你在模型编译时使用了自定义的distance指标,TensorFlow Lite转换器无法处理模型中包含的自定义Python训练组件(比如自定义metrics、优化器的学习率调度器状态),这是两种转换方式均失败的核心原因。

解决方案

转换TFLite模型时,仅保留模型的推理部分,移除训练相关组件:

  1. 重新保存推理专用模型
    训练完成后,保存不含优化器、自定义metrics等训练组件的模型:

    # 训练完成后执行,保存仅用于推理的模型
    model.save('model_inference', include_optimizer=False)
    

    若你已保存了modle_new模型,可先加载再重新保存:

    # 加载原模型,需指定自定义metrics以避免加载错误
    loaded_model = tf.keras.models.load_model('modle_new', custom_objects={'distance': distance})
    # 保存推理模型
    loaded_model.save('model_inference', include_optimizer=False)
    
  2. 转换为TensorFlow Lite模型
    使用上述推理模型进行转换:

    converter = tf.lite.TFLiteConverter.from_saved_model('model_inference')
    converter.optimizations = [tf.lite.Optimize.DEFAULT]
    converter.target_spec.supported_types = [tf.float16]
    tflite_model = converter.convert()
    
    # 保存转换后的TFLite模型
    with open('model_float16.tflite', 'wb') as f:
        f.write(tflite_model)
    

额外提示

  • 注意代码中的拼写错误:modle_new应为model_new,虽不影响转换,但建议修正避免后续路径问题。
  • 若需在TFLite中保留指标计算,需将distance实现为tf.keras.metrics.Metric的子类,且所有操作使用TensorFlow原生API实现;不过TFLite主要面向推理场景,移除训练组件是更通用的解决方案。

内容的提问来源于stack exchange,提问作者李嘉浩

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:54:21