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

手动搭建ANN时遇NumPy矩阵点积维度不匹配错误求助

NumPy点积维度不匹配问题解决思路

核心问题原因

np.dot要求第一个矩阵的列数等于第二个矩阵的行数才能执行矩阵乘法。你当前两个数组都是(4,2),第一个数组的列数是2,第二个的行数是4,不满足匹配条件,因此触发报错。


具体解决方向

  • 转置权重矩阵或训练数据:根据你的网络逻辑,转置其中一个矩阵来匹配维度。示例代码:
    # 若训练数据是(4,2)(4个样本,每个样本2个特征),转置现有权重矩阵适配
    output = np.dot(training, weights[0].T)
    # 或转置训练数据(若你的维度定义是特征在前)
    output = np.dot(training.T, weights[0])
    
  • 修正权重矩阵的初始形状:输入层到隐藏层的权重矩阵形状应为(输入特征数, 隐藏层神经元数)。如果训练数据是(4,2)(4样本、2特征),权重矩阵不该是(4,2),应调整为(2, 神经元数量),此时直接执行np.dot(training, weights[0])就能得到(4, 神经元数量)的输出,符合前向传播逻辑。
  • 分步打印维度验证:在运算前后打印各数组的形状,排查维度逻辑错误:
    print(f"training shape: {training.shape}")
    print(f"weights[0] shape: {weights[0].shape}")
    print(f"weights[0].T shape: {weights[0].T.shape}")
    
  • 使用@运算符简化矩阵乘法:@是Python原生矩阵乘法运算符,和np.dot逻辑一致,但写法更直观,能减少维度混淆:
    result = training @ weights[0].T
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:31:06