Path: blob/main/minBERT/optimizer_test.py
984 views
import torch1import numpy as np2from optimizer import AdamW34seed = 0567def test_optimizer(opt_class) -> torch.Tensor:8rng = np.random.default_rng(seed)9torch.manual_seed(seed)10model = torch.nn.Linear(3, 2, bias=False)11opt = opt_class(12model.parameters(),13lr=1e-3,14weight_decay=1e-4,15correct_bias=True,16)17for i in range(1000):18opt.zero_grad()19x = torch.FloatTensor(rng.uniform(size=[model.in_features]))20y_hat = model(x)21y = torch.Tensor([x[0] + x[1], -x[2]])22loss = ((y - y_hat) ** 2).sum()23loss.backward()24opt.step()25return model.weight.detach()262728ref = torch.tensor(np.load("optimizer_test.npy"))29actual = test_optimizer(AdamW)30print(ref)31print(actual)32assert torch.allclose(ref, actual, atol=1e-6, rtol=1e-4)33print("Optimizer test passed!")343536