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

TensorFlow/Keras中不启用compile=True加载模型时如何获取编译配置

如何在compile=False加载模型时获取编译配置

当你用compile=False加载模型时,仍然可以获取到原有的编译配置(优化器、损失函数、损失权重等)——因为Keras在保存模型时会把这些配置信息存入SavedModel中,compile=False只是不会实例化训练相关的对象,并不会丢弃配置数据。

方法1:直接访问模型的私有编译配置属性

加载后的模型对象自带_compile_config私有属性,里面存储了完整的编译配置字典,你可以直接提取所需信息:

import tensorflow as tf

# 以compile=False加载模型
loaded_model = tf.keras.models.load_model('path/to/your/model', compile=False)

# 获取编译配置字典
compile_config = loaded_model._compile_config

# 提取核心配置
loss_config = compile_config['loss']
optimizer_config = compile_config['optimizer']
loss_weights = compile_config.get('loss_weights', None)  # 不存在时返回None

如果需要将配置解析为可直接使用的对象,可以用Keras的get()方法实例化:

# 处理损失函数(支持单输出/多输出场景)
if isinstance(loss_config, dict):
    # 多输出模型,损失函数以字典形式存储
    loss_fns = {output_name: tf.keras.losses.get(cfg) for output_name, cfg in loss_config.items()}
else:
    # 单输出模型
    loss_fn = tf.keras.losses.get(loss_config)

# 实例化优化器
optimizer = tf.keras.optimizers.get(optimizer_config)

方法2:读取SavedModel的元数据

如果担心私有属性在未来版本中变动,也可以直接读取SavedModel的元数据:

import tensorflow as tf

# 加载SavedModel原始结构
saved_model = tf.saved_model.load('path/to/your/model')
# 获取Keras专属元数据
keras_metadata = saved_model.keras_metadata
# 提取编译配置
compile_config = keras_metadata['compile_config']

# 后续解析步骤同方法1

注意事项

  • _compile_config是Keras内部使用的私有属性,在TensorFlow 2.x全系列中稳定可用,但未来版本可能有调整,生产环境使用建议做好兼容性检查。
  • 若模型由非常旧的Keras版本保存,配置结构可能略有差异,但核心的损失、优化器信息仍可提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:07:16