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

tf2.3.0训练的tf.keras模型如何在tf1.12.0中加载

TensorFlow 2.3.0 模型跨版本迁移至1.12.0 免重训方案

你遇到的两个报错均为版本特性差异导致:Unknown layer: functional是因为TF2.x的Keras将函数式模型基类改为Functional,而TF1.12中不存在该类;Unrecognized keyword arguments: ragged是TF2.x导出的模型配置默认携带了TF1.12不支持的ragged张量相关参数。

方案1:清洗模型配置后导出加载

TF2.3.0 端修改后导出代码

import tensorflow as tf
import json

CNN_model=tf.keras.models.load_model('Real_Image_XAI_Models/Test_10_DC_R_Image.h5')
# 权重保存逻辑保持不变
CNN_model.save_weights("Real_Image_XAI_Models/weights_only.h5")

# 导出前清洗模型配置
raw_config = json.loads(CNN_model.to_json())
# 替换函数式模型类标识,适配TF1.12
raw_config['class_name'] = 'Model'
# 遍历所有层配置,删除TF1.12不支持的参数
for layer in raw_config['config']['layers']:
    for invalid_key in ['ragged', 'dynamic', 'training']:
        if invalid_key in layer['config']:
            del layer['config'][invalid_key]

# 导出清洗后的配置
with open('Real_Image_XAI_Models/model_config_clean.json', 'w') as f:
    json.dump(raw_config, f)

TF1.12.0 端修改后加载代码

import tensorflow as tf
import json

with open('Real_Image_XAI_Models/model_config_clean.json', 'r') as f:
    clean_config = json.load(f)

# 直接加载清洗后的配置,无需添加custom_objects
new_model = tf.keras.models.model_from_json(json.dumps(clean_config))
# 加载权重,若出现层匹配报错可添加by_name=True参数
new_model.load_weights('Real_Image_XAI_Models/weights_only.h5')

方案2:手动复刻结构加载权重(兼容性最高)

如果配置清洗后仍存在层参数不兼容问题,可直接在TF1.12环境下手动编写和TF2.3中结构完全一致的模型(层名称、输入输出维度、参数配置完全对应),不需要训练,直接调用load_weights加载导出的权重文件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:57:02