PyTorch torch.linalg.pinv 関数
torch.linalg.pinvPyTorch の線形代数モジュールで行列の Moore-Penrose 疑似逆行列を計算する関数です。非正方行列や特異行列にとって、疑似逆行列は重要なツールです。
関数定義
torch.linalg.pinv(A, rcond=None, hermitian=False, out=None)
パラメータ:
A(Tensor): 入力行列。rcond(float, オプション): 特異値の切り捨て閾値。hermitian(bool, オプション): True の場合、行列は Hermitian 行列とみなされます。デフォルトは False です。out(Tensor, オプション): 出力テンソル。
戻り値:
torch.Tensor: 行列の疑似逆行列を返します。
使用例
例
import torch
# 非正方行列を作成
A = torch.tensor([[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0]], dtype=torch.float64)
# 疑似逆行列を計算
A_pinv = torch.linalg.pinv(A)
print("行列 A:")
print(A)
print("n疑似逆行列 A^+:")
print(A_pinv)
print("n検証: A @ A^+ @ A ≈ A")
print(A @ A_pinv @ A)
# 非正方行列を作成
A = torch.tensor([[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0]], dtype=torch.float64)
# 疑似逆行列を計算
A_pinv = torch.linalg.pinv(A)
print("行列 A:")
print(A)
print("n疑似逆行列 A^+:")
print(A_pinv)
print("n検証: A @ A^+ @ A ≈ A")
print(A @ A_pinv @ A)
出力結果は次のとおりです:
矩阵 A:
tensor([[1., 2., 3.],
[4., 5., 6.]], dtype=torch.float64)
伪逆 A^+:
tensor([[-0.9444, 0.4444],
[-0.2778, 0.2778],
[ 0.3889, 0.1111]], dtype=float64)
验证: A @ A^+ @ A ≈ A
tensor([[ 1.0000e+00, 2.0000e+00, 3.0000e+00],
[ 4.0000e+00, 5.0000e+00, 6.0000e+00]], dtype=float64)
その他の拡張