| 4 | |
| 5 | class AdamW(Optimizer): |
| 6 | def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0.01, amsgrad=False): |
| 7 | if lr < 0.0: |
| 8 | raise ValueError(f"Invalid learning rate: {lr}") |
| 9 | if eps < 0.0: |
| 10 | raise ValueError(f"Invalid epsilon value: {eps}") |
| 11 | if not 0.0 <= betas[0] < 1.0: |
| 12 | raise ValueError(f"Invalid beta parameter at index 0: {betas[0]}") |
| 13 | if not 0.0 <= betas[1] < 1.0: |
| 14 | raise ValueError(f"Invalid beta parameter at index 1: {betas[1]}") |
| 15 | |
| 16 | defaults = dict(lr=lr, betas=betas, eps=eps, weight_decay=weight_decay, amsgrad=amsgrad) |
| 17 | super().__init__(params, defaults) |
| 18 | |
| 19 | def step(self, closure=None): |
| 20 | loss = None |