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

运行Python神经网络代码时遭遇维度不匹配错误:shapes (3,4) and (5,2) not aligned: 4 (dim 1) != 5 (dim 0)

解决Numpy全连接层矩阵维度不匹配的ValueError

嘿,这个问题很典型——你不小心把第一个层给覆盖了,导致输入维度和层的要求对不上!咱们一步步拆解:

错误原因分析

你看到的错误 shapes (3,4) and (5,2) not aligned: 4 (dim 1) != 5 (dim 0) 是矩阵乘法的基本规则问题:当你用np.dot(a, b)时,矩阵a的列数必须等于矩阵b的行数。

看你的代码细节:

  • 输入X是3个样本,每个样本4个特征,形状为(3,4)
  • 你先创建了layer1 = Layer_Dense(4,5)(这步是对的,输入维度匹配X的4个特征,输出5个神经元),但紧接着又写了layer1 = Layer_Dense(5,2)——这直接把之前的layer1给覆盖了!现在这个新的layer1要求输入维度是5,但你喂给它的还是4维的X,自然就触发了维度不匹配的错误。

而且你明显是想搭建两层串联的网络:输入→第一层(4→5)→第二层(5→2),结果变成了直接用一个要求5维输入的层去处理4维数据,维度链直接断了。

修复后的代码

把第二个层换个独立的名字,并且按网络顺序传递数据:

import numpy as np
np.random.seed(0)
X = [[1, 2, 3, 2.5], [2.0, 5.0, -1.0, 2.0], [-1.5, 2.7, 3.3, -0.8]]

class Layer_Dense:
    def __init__(self,n_inputs, n_neurons):
        self.weights = 0.10 * np.random.randn(n_inputs, n_neurons )
        self.biases = np.zeros((1, n_neurons))
    def forward(self, inputs):
        self.output = np.dot(inputs, self.weights) + self.biases

# 第一层:输入匹配X的4个特征,输出5个神经元
layer1 = Layer_Dense(4,5)
# 第二层:输入匹配第一层的输出维度5,输出2个神经元
layer2 = Layer_Dense(5,2)

# 先让第一层处理原始输入
layer1.forward(X)
# 再把第一层的输出作为第二层的输入
layer2.forward(layer1.output)

print(layer2.output)

修复逻辑说明

  1. layer1接收形状为(3,4)的X,经过矩阵乘法(3,4) · (4,5)得到(3,5)的输出,加上偏置后形状保持(3,5)
  2. layer2接收(3,5)的输入,经过矩阵乘法(3,5) · (5,2)得到(3,2)的输出,这就是最终的网络输出,维度完全匹配。

现在运行代码就不会再报错啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 23:33:15