Python 神经网络异或返回不正确的输出

Python 神经网络异或返回不正确的输出,python,numpy,machine-learning,neural-network,Python,Numpy,Machine Learning,Neural Network,我想知道为什么我的神经网络不工作。 我想说,我问了同样的问题,但我仍然有一些事情我不明白 代码: 我已经测试了前馈传播,效果很好。 错误似乎是好的 我认为更新权重是个问题,但更新权重有正确的公式。这段代码来自《创建你自己的神经网络》一书,它与我使用的几乎相同: self.who += self.lr * numpy.dot((output_errors * final_outputs * (1.0 ­ final_outputs)), numpy.transpose(hidden_outputs

我想知道为什么我的神经网络不工作。 我想说,我问了同样的问题,但我仍然有一些事情我不明白

代码:

我已经测试了前馈传播,效果很好。 错误似乎是好的

我认为更新权重是个问题,但更新权重有正确的公式。这段代码来自《创建你自己的神经网络》一书,它与我使用的几乎相同:

self.who += self.lr * numpy.dot((output_errors * final_outputs * (1.0 ­ final_outputs)), numpy.transpose(hidden_outputs))
目前,我只转发了2个神经元中的1个输入,并计算了错误率。我非常希望它保持这种方式,而不是一次又一次地转发整个测试数据

我有办法做到吗?
提前感谢:)

您有一个小的实现错误:

在反向传播中,您将评估:

hidden_errors = output_weights.T.dot(output_errors)
但必须根据d_预测的_输出来评估隐藏错误,如下所示:

hidden_errors = output_weights.T.dot(d_predicted_output)

此外,您应该降低学习速度并增加历元数。10000历元和lr=0.1对我来说很合适,但您可以对此进行微调。

您可以显示训练的权重吗?输出权重。=[[0.21595628 0.23063487]]隐藏的历元数=[-0.03163080.08377066][0.22549171 0.32939786]]结构至少是正确的耶稣我很愚蠢dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddds、 你可以画出每个历元的损失,看看你真正需要多少历元,10k可能太多了
hidden_errors = output_weights.T.dot(output_errors)
hidden_errors = output_weights.T.dot(d_predicted_output)