From bf868cd728b94e27bff7178c9b056f7a4645e92d Mon Sep 17 00:00:00 2001 From: Andrew Hoblitzell Date: Fri, 3 Nov 2023 18:46:23 -0400 Subject: [PATCH 1/2] Update parametrizations.py For PyTorch 2, torch.solve => torch.linalg.solve --- intermediate_source/parametrizations.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/intermediate_source/parametrizations.py b/intermediate_source/parametrizations.py index 096836e933b..deb75769ccc 100644 --- a/intermediate_source/parametrizations.py +++ b/intermediate_source/parametrizations.py @@ -227,7 +227,7 @@ def __init__(self, n): def forward(self, X): # (I + X)(I - X)^{-1} - return torch.solve(self.Id + X, self.Id - X).solution + return torch.linalg.solve(self.Id + X, self.Id - X) layer = nn.Linear(3, 3) parametrize.register_parametrization(layer, "weight", Skew()) @@ -301,13 +301,13 @@ def __init__(self, n): def forward(self, X): # Assume X skew-symmetric # (I + X)(I - X)^{-1} - return torch.solve(self.Id + X, self.Id - X).solution + return torch.linalg.solve(self.Id + X, self.Id - X) def right_inverse(self, A): # Assume A orthogonal # See https://en.wikipedia.org/wiki/Cayley_transform#Matrix_map # (X - I)(X + I)^{-1} - return torch.solve(X - self.Id, self.Id + X).solution + return torch.linalg.solve(X - self.Id, self.Id + X) layer_orthogonal = nn.Linear(3, 3) parametrize.register_parametrization(layer_orthogonal, "weight", Skew()) From 61ccafee7c81493be5ec2b1ee2cc41bbc41b04b6 Mon Sep 17 00:00:00 2001 From: Nikita Shulga <2453524+malfet@users.noreply.github.com> Date: Fri, 3 Nov 2023 16:18:55 -0700 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Svetlana Karslioglu --- intermediate_source/parametrizations.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/intermediate_source/parametrizations.py b/intermediate_source/parametrizations.py index deb75769ccc..2f8e90b9e41 100644 --- a/intermediate_source/parametrizations.py +++ b/intermediate_source/parametrizations.py @@ -227,7 +227,7 @@ def __init__(self, n): def forward(self, X): # (I + X)(I - X)^{-1} - return torch.linalg.solve(self.Id + X, self.Id - X) + return torch.linalg.solve(self.Id - X, self.Id + X) layer = nn.Linear(3, 3) parametrize.register_parametrization(layer, "weight", Skew()) @@ -301,13 +301,13 @@ def __init__(self, n): def forward(self, X): # Assume X skew-symmetric # (I + X)(I - X)^{-1} - return torch.linalg.solve(self.Id + X, self.Id - X) + return torch.linalg.solve(self.Id - X, self.Id + X) def right_inverse(self, A): # Assume A orthogonal # See https://en.wikipedia.org/wiki/Cayley_transform#Matrix_map # (X - I)(X + I)^{-1} - return torch.linalg.solve(X - self.Id, self.Id + X) + return torch.linalg.solve(X + self.Id, self.Id - X) layer_orthogonal = nn.Linear(3, 3) parametrize.register_parametrization(layer_orthogonal, "weight", Skew())