Rnn train retain_graph=True

When should I use retrain_graph=True? I implemented two rnn examples but both require me to set retrain_graph=True.

When you need the computation graph after a backward, eg for another bbackward, you should use that flag.

How could I use detach() in rnn hidden state? I think this is the key problem to my several recent projects and questions. Hope you could give me some solutions. Thanks.