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

迁移学习添加新层遇ValueError:合并层需传入输入列表

迁移学习模型构建错误修复

错误原因分析

报错源于代码中add()方法的两处错误使用:

  1. 传入对象类型错误:手动调用Dense层并传入cloned_model.layers[0]作为输入,将张量结果传给add(),但Sequential.add()仅接受Layer对象,不支持直接传入张量。
  2. 错误赋值add()结果:Sequential.add()是原地修改模型的方法,无返回值,不能将其赋值给新变量model2。

修正后的代码

def transfered_model_prep(new_model):
    # 冻结原模型参数
    new_model.trainable = False
    # 克隆模型并复制原权重
    cloned_model = keras.models.clone_model(new_model)
    cloned_model.set_weights(new_model.get_weights())
    cloned_model.trainable = False
    
    # 构建移除最后一层的Sequential模型
    cloned_model1 = keras.models.Sequential(cloned_model.layers[:-1])
    
    # 正确添加新的二分类输出层
    cloned_model1.add(keras.layers.Dense(1, activation='sigmoid'))
    
    # 编译模型
    cloned_model1.compile(loss="binary_crossentropy",
                          optimizer="adam",
                          metrics=["accuracy"])
    
    return cloned_model1

额外注意事项

如果原模型移除最后一层后的输出是多维张量(比如卷积层输出的特征图),需要先添加Flatten()层将其转为一维向量,再连接Dense层:

cloned_model1.add(keras.layers.Flatten())
cloned_model1.add(keras.layers.Dense(1, activation='sigmoid'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:12:38