# Method 2: Automatic gradient computation (more common) loss.backward() # Compute all gradients automatically print(f"Weight gradient: {w1.grad.item():.4f}") print(f"Bias gradient: {b.grad.item():.4f}") # Manual parameter update learning_rate = 0.1 with torch.no_grad(): # Disable gradient tracking for updates w1 -= learning_rate * w1.grad b -= learning_rate * b.grad # Clear gradients for next iteration w1.grad.zero_() b.grad.zero_() __ __