Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
yiming-wange
GitHub Repository: yiming-wange/cs224n-2023-solution
Path: blob/main/minBERT/optimizer_test.py
984 views
1
import torch
2
import numpy as np
3
from optimizer import AdamW
4
5
seed = 0
6
7
8
def test_optimizer(opt_class) -> torch.Tensor:
9
rng = np.random.default_rng(seed)
10
torch.manual_seed(seed)
11
model = torch.nn.Linear(3, 2, bias=False)
12
opt = opt_class(
13
model.parameters(),
14
lr=1e-3,
15
weight_decay=1e-4,
16
correct_bias=True,
17
)
18
for i in range(1000):
19
opt.zero_grad()
20
x = torch.FloatTensor(rng.uniform(size=[model.in_features]))
21
y_hat = model(x)
22
y = torch.Tensor([x[0] + x[1], -x[2]])
23
loss = ((y - y_hat) ** 2).sum()
24
loss.backward()
25
opt.step()
26
return model.weight.detach()
27
28
29
ref = torch.tensor(np.load("optimizer_test.npy"))
30
actual = test_optimizer(AdamW)
31
print(ref)
32
print(actual)
33
assert torch.allclose(ref, actual, atol=1e-6, rtol=1e-4)
34
print("Optimizer test passed!")
35
36