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

TensorFlow.NET加载TF2.18 SavedModel报错,求格式兼容方案

解决TensorFlow 2.18模型无法被TensorFlow.NET加载的保存方案

问题本质

  • 用tf.saved_model.save()生成的SavedModel,被TensorFlow.NET误判为TF2.5之前的版本,触发加载异常
  • TensorFlow 2.18强制要求model.save()指定.keras或.h5后缀,而.h5不被TensorFlow.NET支持

可行保存方案

方案1:用.keras格式保存后转文件夹加载

  1. Python端保存模型:
    # 保存为TF推荐的原生Keras格式
    model.save("model.keras")
    
  2. 将.keras文件转成文件夹:
    • 重命名model.keras为model.zip,解压到model_keras_saved文件夹
  3. .NET端加载解压后的文件夹:
    // 跳过Keras模型加载逻辑,直接加载SavedModel
    _model = tf.saved_model.load(modelPath);
    

方案2:带兼容性参数保存SavedModel

在Python保存时添加兼容性选项,避免生成TF.NET无法识别的新格式特征:

import tensorflow as tf

save_options = tf.saved_model.SaveOptions(experimental_custom_gradients=False)
tf.saved_model.save(model, "model_SavedModel/", options=save_options)

之后在.NET端用tf.saved_model.load()加载,不要用load_model。

方案3:临时降级TF版本保存

如果前两种方案无效,可临时降级到TF 2.5~2.10版本保存兼容格式:

  1. 安装指定版本:
    pip install tensorflow==2.10
    
  2. 加载原模型并保存:
    import tensorflow as tf
    model = tf.keras.models.load_model("你的原模型路径")
    model.save("model_compatible")
    

再用TensorFlow.NET加载这个保存后的模型。

核心提示

TensorFlow.NET对新版Keras格式的支持存在滞后,优先用tf.saved_model.load()加载SavedModel结构,而非tf.keras.models.load_model()加载Keras模型,可绕过版本校验问题。

内容的提问来源于stack exchange,提问作者Le Magicien Annonyme

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:13:14