# Part 1: calculate gradients

There are two ways of getting gradients:

**Backward**

x=torch.tensor([3.0], requires_grad=True)

y = torch.pow(x, 2) # y=x**2

y.backward(retain_graph=True)

print(x.grad)6

**Grad**

`x=torch.tensor([3.0], requires_grad=True)`

y = torch.pow(x, 2)

grad_1 = torch.autograd.grad(y, x, create_graph=True)

print(grad_1[0].item())

# Part 2: Note

(1) gradient will not be cleared unless explicitly cleared

`w = torch.tensor([1.], requires_grad=True)`

x = torch.tensor([2.], requires_grad=True)…