Я изучаю gradient descent
метод с Глубокое обучение с нуля .В примере с книгой есть некоторый код, который трудно понять.это код.
def gradient_descent(f, init_x, lr = 0.01, step_num = 100):
x = init_x
x_hist = []
for i in range(step_num):
x_hist.append(x) # plot with x_hist
grad = numerical_gradient(f, x)
x -= lr * grad
return x, x_hist
def function_2(x):
return x[0]**2 + x[1]**2
init_x = np.array([-3.0, 4.0])
x, x_hist = gradient_descent(function_2, init_x, lr = 0.1, step_num = 100)
Я пытаюсь построить x_hist
, чтобы увидеть уменьшение «х».Но когда я печатаю x_hist
, это происходит следующим образом.
x_hist
[array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10]),
array([-6.11110793e-10, 8.14814391e-10])]
Я могу решить эту проблему, если поменяю x_hist.append(x)
на x_hist.append(x.copy())
.К сожалению, я не знаю, почему это не так.Кто-нибудь может сказать мне, что между ними? (Извините за английский)