我正在学习神经网络,特别是研究具有反向传播实现的 MLP。我正在尝试在 python 中实现我自己的网络,我想在开始之前我会看看其他一些库。经过一番搜索,我找到了 Neil Schemenauer 的 python 实现 bpnn.py。( http://arctrix.com/nas/python/bpnn.py )
在完成了代码并阅读了 Christopher M. Bishops 名为“用于模式识别的神经网络”的书的第一部分后,我在 backPropagate 函数中发现了一个问题:
# calculate error terms for output
output_deltas = [0.0] * self.no
for k in range(self.no):
error = targets[k]-self.ao[k]
output_deltas[k] = dsigmoid(self.ao[k]) * error
Bishops 书中计算误差的代码行不同。在第 145 页,等式 4.41 他将输出单位误差定义为:
d_k = y_k - t_k
其中 y_k 是输出,t_k 是目标。(我用_来表示下标)所以我的问题是这行代码应该:
error = targets[k]-self.ao[k]
实事求是:
error = self.ao[k] - targets[k]
我很可能完全错了,但请有人帮忙解决我的困惑。谢谢