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

使用Keras Functional API多输出模型预测遇广播错误求助

解决双输出Keras模型predict时的形状不匹配错误

错误原因

你的模型是双输出模型,调用model.predict()时会返回一个包含两个输出张量的列表,而非单一数组。你直接对整个返回列表调用np.argmax(),导致代码试图将形状为(75,11)的分类输出和另一个回归输出(假设形状为(75,))进行广播合并,触发形状不匹配的报错。

解决步骤

  1. 拆分predict的输出结果
    双输出模型的predict()返回值顺序和模型定义时outputs参数的顺序一致,需要分别提取两个输出后再处理:

    # 拆分分类输出与回归输出
    pred_class, pred_reg = model.predict(data_images[valid])
    # 仅对分类输出执行argmax操作
    print(np.argmax(pred_class, axis=-1))
    # 回归输出可直接查看
    print(pred_reg)
    
  2. 检查训练阶段的目标数据匹配性
    双输出模型在训练时需要传入两个目标数组的列表,你的当前代码中model.fit仅传入了data_vector[tr](形状(75,11)),这可能和模型的双输出结构不匹配。需要根据模型输出调整训练数据:

    # 假设模型两个输出分别对应分类标签和回归目标
    history = model.fit(data_images[tr], [data_labels[tr], data_reg_target[tr]],
                        batch_size=batch_size,
                        epochs=80,
                        verbose=verbosity,
                        validation_split=0.2)
    

    如果data_vector本身是包含两个目标的结构化数据,需确认其维度和顺序是否与模型输出层完全对应。

  3. 验证模型输出结构
    执行model.summary()查看每个输出层的形状,确保分类输出为(None,11)、回归输出为你预期的形状(比如(None,1)),避免因输出层定义错误导致的形状不兼容问题。

内容的提问来源于stack exchange,提问作者Рим

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:30:18