Here is the code. I want to make the x iterated to zero.
When I set the initial value as positive, every thing goes right. However, when the x  is negative at the beginning, the x eventually becomes -inf.
I found that the the result of grad is always positive in the code.  However, in math, the slope of x**2 at x = -1 should be negative. (Correct typo on 8/8)
I have no idea how to solve the problem, and wonder someone can help me.
import torch
x = torch.tensor([-1.0])
x.requires_grad_(True)
rate = 0.1
N = 10
for e in range(N):
    loss_fn = x**2
    loss_fn.backward(x)
    with torch.no_grad():
        delta = x.grad.item()
        x = x - rate * x.grad
    x.requires_grad_(True)