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

如何将TensorFlow 2训练的SavedModel转换为冻结推理图?

将TensorFlow 2 SavedModel转换为冻结推理图

在TensorFlow 2中,由于默认采用Eager Execution模式,转换冻结推理图需要借助兼容工具或特定API完成,以下是两种可靠的实现方案:

方案一:Python代码转换(推荐)

这种方式灵活性高,能精准控制转换过程:

  • 导入依赖库并加载SavedModel

    import tensorflow as tf
    from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2
    
    # 替换为你的SavedModel存储路径
    saved_model_path = "/path/to/your/saved_model"
    # 加载模型并获取推理签名
    loaded_model = tf.saved_model.load(saved_model_path)
    inference_func = loaded_model.signatures["serving_default"]
    
  • 将推理函数转换为冻结图

    # 获取函数的 ConcreteFunction 实例
    concrete_func = inference_func.get_concrete_function()
    # 将变量转换为常量,生成冻结图
    frozen_graph_func = convert_variables_to_constants_v2(concrete_func)
    
  • 保存冻结图文件

    # 替换为你想要保存的路径和文件名
    tf.io.write_graph(
        graph_or_graph_def=frozen_graph_func.graph,
        logdir="/path/to/save",
        name="frozen_inference_graph.pb",
        as_text=False
    )
    

方案二:命令行辅助转换

如果偏好命令行操作,可先通过tf.saved_model.cli确认SavedModel的签名信息,再结合上述代码完成转换:

# 查看SavedModel的签名详情
saved_model_cli show --dir /path/to/your/saved_model --all

确认签名后,替换代码中的serving_default为实际签名名称即可。

关键注意事项

  • 确保SavedModel包含有效的推理签名(通常为serving_default,由模型导出时自动生成)。
  • 冻结图将所有可训练变量转换为常量,适合部署到仅支持静态图的推理环境。
  • 若你的模型包含自定义层或操作,需确保这些操作在冻结过程中能被正确转换为常量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:25:17