我是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记录了我运行数据的次数(第二次循环)
谢谢!
答案 0 :(得分:2)
w_last = w
再次引用w
,而不是它的副本。您必须使用w_last = w.copy()
。