NumPy实现多层感知机时隐藏层权重应设为什么形状?
NumPy实现MLP时隐藏层权重矩阵的形状设置
已知前提核对
- 输入层节点数为4,鸢尾花训练集形状为
(112,4):对应112条训练样本,单样本4维特征,维度匹配正确 - 隐藏层设置3个节点时,隐藏层输出形状为
(112,3)的推测完全正确
权重矩阵正确形状
隐藏层权重矩阵需要初始化为 (4,3) 的形状。
推导逻辑
全连接层的前向传播核心是输入矩阵与权重矩阵的点积运算,NumPy中矩阵点积X @ W的维度规则为:
点积结果的形状 = (X的行数, W的列数),且必须满足X的列数等于W的行数,否则运算报错。
你的输入矩阵X形状为(112,4),要得到形状为(112,3)的点积结果:
- 要求W的行数和X的列数相等,即4
- 要求W的列数等于预期输出的列数,即3
因此权重矩阵形状固定为(4,3),其中W[i][j]对应第i个输入节点到第j个隐藏层节点的连接权重。
补充说明
- 不要将权重形状错设为
(3,4),会直接触发维度不匹配的运行错误 - 点积运算后需要额外添加形状为
(3,)的隐藏层偏置项,偏置会通过NumPy的广播机制自动适配所有112个样本的计算,叠加后经过激活函数即可得到最终的隐藏层输出 - 你提到的「每个输入对应专属权重,
input[0]对应weight[0]」是对全连接权重的误解:全连接层中每个输入节点会和所有隐藏层节点相连,每个连接都有独立权重,不存在单输入对应单权重的关系。
内容的提问来源于stack exchange,提问作者objectobject
相关产品推荐
相关产品推荐

