我看到了以下代码:
权重不应该是4×4的随机矩阵吗?因为我们在隐藏层中有4个神经元,输入值有4个,所以权重的总数应该是16,但下面的代码在初始化函数中分配了一个2×4的矩阵,并创建了一个点积?
回答:
你的输入矩阵X
表明样本数量为4,特征数量为3。神经网络输入层的neurons数量等于特征数量,而不是样本数量。例如,假设你有4辆车,你选择了3个特征:颜色、座位数量和原产国。对于每一辆车样本,你将这3个特征输入网络并训练你的模型。即使你有4000个样本,输入neurons的数量也不会改变;它是3。
因此,self.weights1
的形状是(3, 4)
,其中3是特征数量,4是隐藏neurons的数量(这个4与样本数量无关),正如预期的那样。
*:有时输入会被增加1(或-1)来处理偏置,因此在这种情况下,输入neurons的数量将是num_features + 1
;但这是选择是否单独处理偏置的问题。