-2
我有一个奇怪的行为与下面的代码中的变量。Python变量不应该改变,但它改变了吗?
为什么w3的输出与w2相同?它在代码中从来没有改变,但最终它具有与w2相同的值?
import numpy as np
inpt = np.array([[1]])
w1 = np.random.random((1,1))
w2 = np.random.random((1,1))
w3 = w2
print("First w3: ", w3)
n1 = np.dot(inpt, w1)
n2 = np.dot(n1, w2)
delta = 1 - n2
n1_d = np.dot(delta, w2.T)
w2 += np.dot(n1.T, delta)
w1 += np.dot(inpt.T, n1_d)
print("Second w3: ", w3)
print("Value of w2: ", w2)
首先W3:[0.98377014]
二W3:[1.01105407]
W2的值:[1.01105407]
什么时我在这里做错了吗?
不是蟒蛇专家,所以我可能是错的。是否因为w3只是对w2的引用?所以当你改变w3时,w2引用w3的新值。它在这行后面改变'w2 + = np.dot(n1.T,delta)' –
使用'w3 = np.copy(w2)' –
看起来你并不清楚Python变量和赋值如何工作。这里有一个[方便的指南](https://nedbatchelder.com/text/names.html)。 – user2357112