Skip to content

Commit 1843568

Browse files
authored
Repair parametrization notebook examples (#50)
1 parent 521bb2e commit 1843568

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

‎examples/parametrisations.ipynb‎

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"outputs": [],
6868
"source": [
6969
"class SymmetricParametrization(nn.Module):\n",
70-
" def forward(X):\n",
70+
" def forward(self, X):\n",
7171
" A = X.triu()\n",
7272
" return A + A.T "
7373
]
@@ -113,9 +113,10 @@
113113
"source": [
114114
"class PruningParametrization(nn.Module):\n",
115115
" def __init__(self, X, p_drop=0.2):\n",
116+
" super().__init__()\n",
116117
" # sample zeros with probability p_drop\n",
117118
" mask = torch.full_like(X, 1.0 - p_drop)\n",
118-
" self.mask = torch.bernoulli(mask)\n",
119+
" self.register_buffer(\"mask\", torch.bernoulli(mask))\n",
119120
"\n",
120121
" def forward(self, X):\n",
121122
" return X * self.mask"
@@ -313,8 +314,6 @@
313314
" return torch.allclose(X, -X.T)\n",
314315
"\n",
315316
" def right_inverse(self, X):\n",
316-
" if not self.is_skew(X):\n",
317-
" raise ValueError(\"This matirx is not skew-symmetric!\")\n",
318317
" return X.triu(1)\n",
319318
" \n",
320319
"# Skew.forward(Skew.right_inverse(X)) == X\n",
@@ -347,11 +346,11 @@
347346
" def forward(self, A):\n",
348347
" # Cayley map: (I + A)(I - A)^{-1}\n",
349348
" # This is orthogonal whenever A is skew-symmetric\n",
350-
" Id = torch.eye(A.size(0))\n",
349+
" Id = torch.eye(A.size(0), dtype=A.dtype, device=A.device)\n",
351350
" return self.B @ torch.linalg.solve(Id - A, Id + A)\n",
352351
"\n",
353352
" def is_orthogonal(self, X):\n",
354-
" Id = torch.eye(X.size(0))\n",
353+
" Id = torch.eye(X.size(0), dtype=X.dtype, device=X.device)\n",
355354
" return torch.allclose(X.T @ X, Id, atol=1e-6)\n",
356355
"\n",
357356
" def right_inverse(self, X):\n",
@@ -362,7 +361,7 @@
362361
" return torch.zeros_like(X)\n",
363362
"\n",
364363
"\n",
365-
"model = nn.Linear(5,5)\n",
364+
"model = nn.Linear(5, 5)\n",
366365
"P.register_parametrization(model, \"weight\", Skew())\n",
367366
"P.register_parametrization(model, \"weight\", Orthogonal(5))\n",
368367
"\n",

0 commit comments

Comments
 (0)