Python 实现梯度下降的问题

Python 实现梯度下降的问题,python,Python,我从头开始实现梯度下降,我有一段代码给我带来了麻烦 temp = theta_new[j] theta_new[j] = theta_new[j] - alpha*deriv theta_old[j] = temp 它没有改变theta\u new[j]。如果我在theta\u new[j]赋值之后打印theta\u new[j],那么它会被更改,但不知何故,我赋值theta\u old[j]的第三行将theta\u new[j]恢复到初始值。我假设这与数组的引用方式有关,但我不能对此置之不理

我从头开始实现梯度下降,我有一段代码给我带来了麻烦

temp = theta_new[j]
theta_new[j] = theta_new[j] - alpha*deriv
theta_old[j] = temp

它没有改变
theta\u new[j]
。如果我在
theta\u new[j]
赋值之后打印
theta\u new[j]
,那么它会被更改,但不知何故,我赋值
theta\u old[j]
的第三行将
theta\u new[j]
恢复到初始值。我假设这与数组的引用方式有关,但我不能对此置之不理。

您应该使用
深度复制来复制对象,并创建一个新的内存值和一个新指针:

import copy
theta_old = copy.deepcopy(theta_new)
theta_new[j] = theta_new[j] - alpha*deriv
...

你确定
alpha*deriv
不是零?我完整的例子将帮助我们帮助你们。