Hi,
Some operations need intermediary results to be saved during the forward pass in order to execute the backward pass. For example, the function lambda x: x.pow(2)  needs to save the input x because it is needed to compute the gradient with respect to x.
When you call the forward of such operation, the autograd engine does not perform a copy of your tensor x, but something akin to a pointer to your tensor x.
If after performing this operation (but before calling backwards), x happens to be modified inplace, then we’d lose the initial value of x and the gradient calculation would be incorrect.
Hope this clarifies.