Leaf — тензор, созданный пользователем (или Parameter), а не как результат операции; именно у листьев с requires_grad обычно появляется .grad после backward.
Разбор
- Результат
x*2 — не leaf (is_leaf=False).
- Неаккуратный inplace ломает ожидания leaf/grad.
retain_grad() позволяет видеть grad у non-leaf.
- Ошибка «grad is None» часто из-за non-leaf или отключённого графа.
Итог
Градиенты по умолчанию копят на leaf-параметрах.