from torch.optim import SGD ... W = torch.rand(size=(2, 1), requires_grad=True) B = torch.rand(1, requires_grad=True) optimizer = SGD(params = [W, B], lr=0.1) for step in range(10): pred = X @ W + B # Forward pass loss = ((Y - pred) ** 2).mean() # Calculate loss loss.backward() # Calculate gradients optimizer.step() # Update W and B according to gradients optimizer.zero_grad() # Reset all gradients