Yes, you are right. I just tried the following and it seems weird to me from a design POV.
y = torch.tensor([0., 1., 2.], requires_grad=True)
y[(1,)] = 0. is allowed.
y[[1,]] = 0. throws “RuntimeError: a leaf Variable that requires grad has been used in an in-place operation.”
Is there good reason for this? They are both in-place modifying a leaf variable requiring grad.