关于Keras中get_weights()未返回预期权重的技术问询
你对神经网络权重的理解出现了核心偏差
首先得明确:神经网络的权重是模型共享的参数,和你的样本数量(150行)完全无关,你混淆了「模型权重」和「样本预测输出」这两个概念。
咱们结合你的代码来拆解:
- 你构建的是一个极简网络:输入是3维特征,经过1个仅含1个神经元的Dense层(激活函数tanh)。这个Dense层的参数结构是固定的:
- 3个输入到1个神经元的连接权重(对应
get_weights()返回的第一个3×1数组) - 1个神经元的偏置项(对应返回的第二个1×1数组)
- 3个输入到1个神经元的连接权重(对应
- 这组权重是整个模型共用的——不管你喂进去1个样本还是150个样本,模型都会用这同一套权重来计算每个样本的输出。
你想要的「150个对应每一行数据的结果」,其实是模型的预测输出,也就是你代码里的ypredi3——它的形状应该是(150, 1),对应150个样本各自的预测值,而不是模型的权重。
举个直白的类比:就像你用同一个公式y = w1*x1 + w2*x2 + w3*x3 + b计算150组(x1,x2,x3)的y值,公式里的w1/w2/w3/b是固定的参数(对应模型权重),而150个y值就是你的预测结果,两者完全不是一回事。
所以你当前get_weights()返回的结果是完全正确的,完全符合这个简单模型的参数数量。
内容的提问来源于stack exchange,提问作者jake_t
相关产品推荐
相关产品推荐

