我有一个无限的 while 循环,但我不明白为什么

Reg*_*eño -1 python while-loop neural-network deep-learning

我正在尝试学习如何从头开始编写非常简单的神经网络。但是我看不到如何进行正确的培训。每当我运行 while 循环时,它就会陷入无限循环。这是我的代码:

#inputs and targets
x1=[1,0,1]
x2=[0,1,0]
x3=[0,0,1]
inputs=[x1,x2,x3]
targets=[1,0,0,1]

#parameters
np.random.seed(1)
w1 = np.random.random_sample(size = 3)
w1=w1.tolist()
alpha=0.1
itera=0

#activation function
def purelin(z):
    return z

#network
def red(i,w1):
    n=[]
    for inp in i:
        a=inp*w1[inputs.index(i)]
        n.append(a)
    n=sum(n) #sumar inputs*weights (caso sin bias)
    a=purelin(n)
    return a

#forward propagation
def forw(inputs):
    outputs=[]
    for i in inputs:
        x=red(i,w1)
        outputs.append(x)
    return outputs

#error
def error(targets, outputs):
    e=[]
    zip_object = zip(targets, outputs)
    for i, j in zip_object:
        e.append(i-j)
    return e 


#backpropagation 
def back(e):
    w1_=[]
    zip_object2 = zip(w1, e)
    for i, j in zip_object2:
        w1_.append(i-alpha*j)
    return w1_

#training
while itera<1000:
    outputs=forw(inputs)
    e=error(targets,outputs)
    w1=back(e)
    itera=+1
Run Code Online (Sandbox Code Playgroud)

我知道我还有很多工作要做,但我想解决这个问题,这样我就可以调整我的代码并获得结果。谢谢你!!

小智 8

这只是一个小打字错误。在循环结束时,您不会增加itera1,而是将其设置为+1 。只需将最后一行更改为即可itera += 1,它应该可以正常工作。

注意:有时打印出变量可能会有所帮助,即使我总是建议您正确调试代码。