神经网络反向传播问题

时间:2016-02-18 21:33:13

标签: python neural-network backpropagation

我希望你们中的任何一个能够帮助我,我正在使用反向传播的神经网络的简单代码工作,我看过很多指南,当我训练很多次时,我仍然无法得到很好的结果我在python中遇到溢出错误。

在看到代码之前,结构是这样的 * 2输入节点 * 1层隐藏节点,但它们的数量可变,数量取决于具体的运行。 * 1输出节点 最终值应为0或1。

输入节点指向具有所有隐藏节点的列表,每个节点也指向具有每个隐藏节点的相应权重的列表。 BiasInitial。它是从输入节点到隐藏节点的偏差,有一个指向每个隐藏节点的指针和每个隐藏节点的权重。

每个隐藏节点都指向最终节点并具有权重。

并且BiasFinal指向具有相应权重的最终节点。

def Training(X,Y,ElemClass,BiasHidden, BiasFinal):

k = 0
while k < len(X.next):
    net = X.out*X.weight[k] + Y.out*Y.weight[k] + BiasHidden.out*BiasHidden.weight[k] ### + BIAS
    X.next[k].out = 1/(1+math.exp(-net))
    k=k+1


# Net for final node
net = 0
for node in X.next:
    net = net + node.out*node.weight[0]
net = net + BiasFinal.out*BiasFinal.weight[0]
final = X.next[0].next

final.out = 1/(1+math.exp(-net))


#final error calculation
error = final.out*(1-final.out)*(ElemClass-final.out)


#alter hidden nodes weight
k = 0
BiasFinal.weight[0] = BiasFinal.weight[0] + error*BiasFinal.out
while k < len(X.next):
    node = X.next[k]

    node.weight[0] = node.weight[0] + error*node.out
    error2 = node.out*(1-node.out)*(node.weight[0]*error)


    #alter input nodes weight

    BiasHidden.weight[k] = BiasHidden.weight[k] + error2*BiasHidden.out
    X.weight[k] = X.weight[k] + error2*X.out
    Y.weight[k] = Y.weight[k] + error2*Y.out

    k = k+1

return (ElemClass-final.out)

如果你们发现任何错误,我会感到沮丧,如果你不这样做,我会为溢出错误提供解决方案。

感谢。

0 个答案:

没有答案