torch.Tensor.is_leaf
Tensor.is_leaf
All Tensors that have "requires_grad" which is "False" will be leaf
   Tensors by convention.
For Tensors that have "requires_grad" which is "True", they will be
   leaf Tensors if they were created by the user. This means that they
   are not the result of an operation and so "grad_fn" is None.
Only leaf Tensors will have their "grad" populated during a call to
   "backward()". To get "grad" populated for non-leaf Tensors, you can
   use "retain_grad()".
Example:
  >>> a = torch.rand(10, requires_grad=True)
  >>> a.is_leaf
  True
  >>> b = torch.rand(10, requires_grad=True).cuda()
  >>> b.is_leaf
  False
  # b was created by the operation that cast a cpu Tensor into a cuda Tensor
  >>> c = torch.rand(10, requires_grad=True) + 2
  >>> c.is_leaf
  False
  # c was created by the addition operation
  >>> d = torch.rand(10).cuda()
  >>> d.is_leaf
  True
