PyTorch torch.linalg.lstsq 関数
torch.linalg.lstsq線形代数モジュールで線形最小二乗問題を解くための関数です。argmin_x ||AX - B||_F を求めます。
関数定義
torch.linalg.lstsq(A, B, rcond=None, driver=None)
パラメータ:
A(Tensor): 係数行列。B(Tensor): 右側の行列またはベクトル。rcond(float, オプション): 特異値を切り捨てるための条件数。driver(str, オプション): ソルバーの選択。'gels', 'gelsd', 'gelsy' が選択可能。
戻り値:
torch.Tensor: 最小二乗解を返します。
使用例
例
import torch
# 係数行列と右辺ベクトルを作成
A = torch.tensor([[1.0, 1.0], [1.0, 2.0], [1.0, 3.0]], dtype=torch.float64)
B = torch.tensor([1.0, 2.0, 3.0], dtype=torch.float64)
# 最小二乗を解く
X = torch.linalg.lstsq(A, B).solution
print("係数行列 A:")
print(A)
print("n右側ベクトル B:")
print(B)
print("n最小二乗解 X:")
print(X)
# 係数行列と右辺ベクトルを作成
A = torch.tensor([[1.0, 1.0], [1.0, 2.0], [1.0, 3.0]], dtype=torch.float64)
B = torch.tensor([1.0, 2.0, 3.0], dtype=torch.float64)
# 最小二乗を解く
X = torch.linalg.lstsq(A, B).solution
print("係数行列 A:")
print(A)
print("n右側ベクトル B:")
print(B)
print("n最小二乗解 X:")
print(X)
出力結果は:
系数矩阵 A:
tensor([[1., 1.],
[1., 2.],
[1., 3.]], dtype=torch.float64)
右侧向量 B:
tensor([1., 2., 3.], dtype=float64)
最小二乘解 X:
tensor([0.0000, 1.0000], dtype=float64)
その他の拡張