我有一个无限的 while 循环,但我不明白为什么
I have an infinite while loop but i don't see why
我正在尝试学习如何从头开始编写非常简单的神经网络代码。但是我看不到正确的培训。每当我 运行 我的 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
我知道我还有很多工作要做,但我想解决这个问题,这样我就可以调整我的代码并获得结果。谢谢!!
这只是一个小的打字错误。在循环结束时,您不是将 itera
递增 1,而是将其设置为 +1
。
只需将最后一行更改为 itera += 1
它应该可以正常工作。
注意:有时打印变量可能会有帮助,即使我总是建议您正确调试代码。
我正在尝试学习如何从头开始编写非常简单的神经网络代码。但是我看不到正确的培训。每当我 运行 我的 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
我知道我还有很多工作要做,但我想解决这个问题,这样我就可以调整我的代码并获得结果。谢谢!!
这只是一个小的打字错误。在循环结束时,您不是将 itera
递增 1,而是将其设置为 +1
。
只需将最后一行更改为 itera += 1
它应该可以正常工作。
注意:有时打印变量可能会有帮助,即使我总是建议您正确调试代码。