-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