I’m currently migrating my old code from v0.3.1 to v0.4.0. During migration, I feel confused by the document about clone and detach. After searching related topics in the forum,  I find that most discussions are too old.  Specifically, I want an answer to the three following questions:

the difference between tensor.clone() and tensor.detach() in v0.4.0?
the difference between tensor and tensor.data in v0.4.0?
the difference between tensor and tensor.data when calling clone() or detach() in v0.4.0?
And an additional question which will help me understand how my old code work and what is those old topic talking:
the difference between tensor.clone(), variable.clone() and variable.detach() in v0.3.1?