Python嵌套循环行为

时间:2018-01-24 18:03:33

标签: python loops

我是python的新手,我认为我不了解嵌套循环的工作方式。我有这个嵌套循环应该运行多次,直到达到精度eps但它在运行一次后退出。我尝试调试并意识到当达到纪元+ = 1增量线时,w和w_last都被第二个循环修改并且相等。我不明白为什么会这样,因为只有w应该被第二个循环修改。我使用for循环有同样的问题。有些事我不明白,也许有人可以指出

while(all(abs(w - w_last)) >= eps) :
  w_last = w
  sum_error = 0
  j = 0
  while j < n_data :
     y_pred[j] = w[0]+ (w[1]*x[j])
     error = y_pred[j] - y[j]
     sum_error += error**2
     w[0] = w[0] - step * error
     w[1] = w[1] - step * error * x[j]
     j += 1
  epoch += 1
  print('>epoch=%d, step=%.4f, error=%.3f' % (epoch, step, sum_error))
print(w)

w是(2,1)numpy权重数组 epoch记录了我运行数据的次数(第二次循环)

谢谢!

1 个答案:

答案 0 :(得分:2)

w_last = w再次引用w,而不是它的副本。您必须使用w_last = w.copy()