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

七模型加权集成预测触发ValueError形状不匹配广播错误如何解决

错误原因

  • 权重数组维度匹配错误:你定义的prediction_weights是形状为(1,7)的二维数组,直接遍历的时候取出的weight是形状(7,)的数组,无法和单个模型输出的(624,3)形状的预测结果做广播运算。
  • 遍历逻辑错误:zip(prediction_weights, preds)只会迭代1次(因为prediction_weights第一维长度为1),无法实现7个权重和7个模型预测结果的一一配对。
  • 加权结果初始化参数存在隐患:你代码里初始化weighted_predictions7时用到的nb_test_samples赋值为1、num_classes赋值为1,和实际的测试样本数624、类别数3不符,容易引发后续形状错误。

解决方法

先将权重数组扁平化处理为一维数组,用更稳妥的方式初始化加权结果存储变量,再遍历配对权重和对应模型的预测结果做加权计算,修改后代码如下:

import numpy as np
from sklearn import metrics

# 把权重扁平化得到形状为(7,)的一维数组,每个元素对应一个模型的权重
prediction_weights = np.array([[3.66963025e-01, 1.08053256e-01,1.14617370e-01, 4.10366349e-01,
 6.16391075e-14, 4.37376684e-14, 9.26785075e-18]]).flatten() 

# 直接参考Y_test的形状初始化,避免参数写错导致形状错误
weighted_predictions7 = np.zeros_like(Y_test, dtype='float32')

# 遍历配对单个权重和单个模型的预测结果
for weight, prediction in zip(prediction_weights, preds):
    weighted_predictions7 += weight * prediction    

yPred7 = np.argmax(weighted_predictions7, axis=1)
yTrue = Y_test.argmax(axis=-1)
accuracy = metrics.accuracy_score(yTrue, yPred7) * 100

np.savetxt('weighted_averaging_7_y_pred.csv',
            weighted_predictions7,fmt='%f',
            delimiter = ",")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:42:00