PyTorch torch.linalg.qr 関数
torch.linalg.qrは、PyTorch の線形代数モジュールで行列の QR 分解を計算するための関数です。QR 分解は行列 A を A = Q * R に分解します。ここで Q は直交行列、R は上三角行列です。
関数定義
torch.linalg.qr(A, mode='reduced', out=None)
パラメータ:
A(Tensor): 入力行列。mode(str, オプション): 'reduced' は簡約分解を返し、'complete' は完全分解を返します。デフォルトは 'reduced' です。out(tuple, オプション): 出力タプル。
戻り値:
tuple: (Q, R) のタプルを返します。
使用例
実例
import torch
# 行列を作成
A = torch.tensor([[12.0, -51.0, 4.0],
[6.0, 167.0, -68.0],
[-4.0, 24.0, -41.0]])
# QR 分解
Q, R = torch.linalg.qr(A)
print("行列 A:")
print(A)
print("n直交行列 Q:")
print(Q)
print("n上三角行列 R:")
print(R)
print("n検証: Q @ R =")
print(Q @ R)
# 行列を作成
A = torch.tensor([[12.0, -51.0, 4.0],
[6.0, 167.0, -68.0],
[-4.0, 24.0, -41.0]])
# QR 分解
Q, R = torch.linalg.qr(A)
print("行列 A:")
print(A)
print("n直交行列 Q:")
print(Q)
print("n上三角行列 R:")
print(R)
print("n検証: Q @ R =")
print(Q @ R)
出力結果は次のとおりです。
矩阵 A:
tensor([[ 12., -51., 4.],
[ 6., 167., -68.],
[ -4., 24., -41.]])
正交矩阵 Q:
tensor([[-0.8571, 0.3943, 0.3314],
[-0.4286, -0.9029, -0.0343],
[ 0.2857, -0.1714, 0.9428]])
上三角矩阵 R:
tensor([[ -14., -21., 14.],
[ 0., -175., 70.],
[ 0., 0., -35.]])
验证: Q @ R =
tensor([[ 12., -51., 4.],
[ 6., 167., -68.],
[ -4., 24., -41.]])
その他の拡張