使用Keras Functional API多输出模型预测遇广播错误求助
解决双输出Keras模型predict时的形状不匹配错误
错误原因
你的模型是双输出模型,调用model.predict()时会返回一个包含两个输出张量的列表,而非单一数组。你直接对整个返回列表调用np.argmax(),导致代码试图将形状为(75,11)的分类输出和另一个回归输出(假设形状为(75,))进行广播合并,触发形状不匹配的报错。
解决步骤
拆分predict的输出结果
双输出模型的predict()返回值顺序和模型定义时outputs参数的顺序一致,需要分别提取两个输出后再处理:# 拆分分类输出与回归输出 pred_class, pred_reg = model.predict(data_images[valid]) # 仅对分类输出执行argmax操作 print(np.argmax(pred_class, axis=-1)) # 回归输出可直接查看 print(pred_reg)检查训练阶段的目标数据匹配性
双输出模型在训练时需要传入两个目标数组的列表,你的当前代码中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本身是包含两个目标的结构化数据,需确认其维度和顺序是否与模型输出层完全对应。验证模型输出结构
执行model.summary()查看每个输出层的形状,确保分类输出为(None,11)、回归输出为你预期的形状(比如(None,1)),避免因输出层定义错误导致的形状不兼容问题。
内容的提问来源于stack exchange,提问作者Рим
相关产品推荐
相关产品推荐

