






手动实现
X = A
Xtensor([[1., 1.],
[3., 1.]])y = B
ytensor([[2.],
[4.]])X.t()tensor([[1., 3.],
[1., 1.]])w = torch.mm(torch.mm(torch.inverse(torch.mm(X.t(),X)),X.t()),y)这里直接套用上面推导出来的公式
wtensor([[1.0000],
[1.0000]])调用函数求解
torch.lstsq(y, X)torch.return_types.lstsq(
solution=tensor([[1.0000],
[1.0000]]),
QR=tensor([[-3.1623, -1.2649],
[ 0.7208, -0.6325]]))对于lstsq函数来说,第一个参数是因变量张量,第二个参数是自变量张量,并且同时返回结果还包括QR矩阵分解的结果。
补充知识点:范数的计算
求解L2范数:
# 默认情况,求解L2范数,个元素的平方和开平方
torch.linalg.norm(t)求解L1范数:
# 输入参数,求解L1范数,个元素的绝对值之和
torch.linalg.norm(t, 1)总结
最小二乘法计算快速,但条件苛刻,需满足X存在逆矩阵。