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

Keras双输入模型运行model.fit方法报错的原因及解决方法咨询

报错触发原因

该错误核心由计算图连通性问题导致,常见触发场景有三类:

  1. 直接复用独立构建的autoencoder实例处理两个输入时,该实例在之前的构建流程中已经绑定了专属输入层,跨模型调用时Keras无法正确追踪input1/input2到最终输出的反向传播路径,出现计算图断裂。
  2. 输入层写法不规范:低版本Keras中Input(85)会被识别为batch_size=85而非输入特征维度,导致模型输入形状和训练数据形状不匹配。
  3. 若使用预训练自编码器做特征提取,未冻结自编码器权重时,多输入复用同一模型的场景下可能出现梯度计算冲突。

修复方案

场景A:仅使用自编码器做特征提取,不需要微调自编码器权重(绝大多数场景适用)

  1. 先单独从完整自编码器中提取编码器部分,冻结权重避免训练时更新:
# 请替换'encoder_output_layer_name'为你自编码器中编码层的实际名称
encoder = keras.Model(
    inputs=autoencoder.input,
    outputs=autoencoder.get_layer('encoder_output_layer_name').output
)
encoder.trainable = False
  1. 修正模型构建代码,显式指定输入形状:
input1 = keras.layers.Input(shape=(85,))
input2 = keras.layers.Input(shape=(85,))
encoder1 = encoder(input1)
encoder2 = encoder(input2)
connector = keras.layers.Concatenate(axis=1)([encoder1, encoder2])
layer1 = keras.layers.Dense(24, activation='relu')(connector)
model = keras.Model(inputs=[input1, input2], outputs=layer1)
  1. 重新编译模型后再调用fit方法训练即可。

场景B:需要同步微调自编码器权重和下游层权重

仅需去掉上述步骤中encoder.trainable = False的配置即可,若仍报错可直接在当前计算图中重新实例化编码器结构,加载预训练权重后再复用,避免跨计算图调用问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:39:00