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

修改已保存Keras模型层名后加载报错:Graph disconnected

Keras 2.3.1修改输入层名后加载模型报错的解决方法

直接修改层的name属性只会改变层的显示名称,模型计算图内部的张量引用还是旧名称,保存再加载时,Keras会根据新层名查找对应输入张量,自然找不到,触发图断开错误。

正确的做法是重新构建模型,基于改名后的输入层重新建立计算图关联,步骤如下:

  1. 加载原模型,提取目标输入层并修改名称
  2. 基于改名后的输入层和原模型的输出层,重新创建模型实例
  3. 保存新模型,此时计算图的张量引用会同步更新为新层名

完整代码示例:

from keras.models import load_model, save_model
from keras.models import Model

# 加载原始训练好的模型
original_model = load_model('final_model.hdf5')

# 定位并修改输入层名称
user_input_layer = original_model.get_layer('user_embedding_123')
user_input_layer.name = 'user_embedding'

item_input_layer = original_model.get_layer('item_embedding_284')
item_input_layer.name = 'item_embedding'

# 基于修改后的输入层和原模型输出,重新构建模型
new_model = Model(
    inputs=[user_input_layer.input, item_input_layer.input],
    outputs=original_model.output
)

# 保存修改后的模型
save_model(new_model, "final_model_renamed.hdf5")

# 验证加载是否正常
model_renamed = load_model('final_model_renamed.hdf5')
print(model_renamed.summary())

关键说明

Keras的计算图依赖张量的名称关联,输入层的张量名称在创建时就已确定,修改层名不会自动更新张量的内部引用。重新构建模型时,会基于新的层名生成对应的张量引用,确保整个计算图的依赖关系完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:32:45