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

如何从saved_model.pb文件加载模型结构与权重?

加载SavedModel并获取可查看结构的模型对象

你用tf.saved_model.save保存的模型,通过tf.saved_model.load加载后得到的是SavedModel对象,它没有model.summary()方法,但可以通过以下几种方式获取支持结构查看的模型实例:

方法1:用Keras加载器直接恢复(推荐)

如果你的模型原本是Keras模型(比如tf.keras.Model子类或函数式模型),直接用tf.keras.models.load_model加载,就能得到完整的Keras模型对象,支持summary()、权重查看等操作:

import tensorflow as tf

# 加载模型
keras_model = tf.keras.models.load_model(model_directory)
# 查看模型结构
keras_model.summary()
# 查看模型权重
print(keras_model.trainable_weights)

方法2:从SavedModel重建Keras模型

如果加载后的SavedModel没有直接的Keras接口,可以通过签名信息重建Keras模型:

import tensorflow as tf

# 加载SavedModel
loaded_savedmodel = tf.saved_model.load(model_directory)
# 获取推理签名
infer_signature = loaded_savedmodel.signatures["serving_default"]

# 提取输入特征(单输入场景,多输入可循环处理)
input_tensor = infer_signature.inputs[0]
input_shape = input_tensor.shape[1:]  # 忽略batch维度
input_dtype = input_tensor.dtype

# 构建输入层
inputs = tf.keras.Input(shape=input_shape, dtype=input_dtype)
# 调用SavedModel得到输出
outputs = loaded_savedmodel(inputs)
# 封装为Keras模型
rebuilt_model = tf.keras.Model(inputs=inputs, outputs=outputs)

# 查看模型结构
rebuilt_model.summary()

方法3:利用加载对象的Keras属性

从你给出的dir(model_loaded)输出中可以看到keras_api属性,尝试直接提取Keras模型:

# 从加载的SavedModel对象中获取Keras模型
keras_model = loaded_savedmodel.keras_api.layer
keras_model.summary()

说明

tf.saved_model.load加载的是通用的SavedModel格式对象,它包含模型的计算图、变量和签名,但并非Keras原生模型实例;而tf.keras.models.load_model会自动检测并恢复Keras模型的结构和权重,因此优先使用该方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:57:25