我正在用python写作业,但是问题出了点问题,我以前没见过函数,不知有没有人能帮我,谢谢
这是python函数
def dF(x):
return 2 * A.T @ (A @ x - np.eye(len(A), dtype=float))
def F(x):
residual = A @ x - np.eye(len(A), dtype=float)
return np.sum(residual ** 2)
def gradient_descent(F, dF, x, steps=100, lr=0.001):
loss = []
for _ in range(steps):
dx = dF(x)
x -= lr * dx
loss.append(F(x))
return x, loss
A = np.array([
[2, 5, 1, 4, 6],
[3, 5, 0, 0, 0],
[1, 1, 0, 3, 8],
[6, 6, 2, 2, 1],
[8, 3, 5, 1, 4],
], dtype=float)
X, loss1 = gradient_descent(F, dF, A * 0, steps=300)
(A @ X).round(2), loss1[-1]
我不知道*和@的意思,这对我来说很难
星*是逐项乘法,@是矩阵乘法:)
相关问题 更多 >
编程相关推荐