w1 = torch.tensor(-2.0, requires_grad=True) # the only change b1 = torch.tensor(0.0, requires_grad=True) w2 = torch.tensor(3.0, requires_grad=True) b2 = torch.tensor(1.0, requires_grad=True) x, y = torch.tensor(1.0), torch.tensor(2.0) h1 = w1 * x + b1 a1 = torch.relu(h1) h2 = w2 * a1 + b2 loss = (h2 - y) ** 2 loss.backward() print(w1.grad.item(), b1.grad.item()) # 0.0 0.0 print(w2.grad.item(), b2.grad.item()) # 0.0 -2.0