If I use nn.Tanh I have to declare it in my_model.init(), e.g.
self.tanh = nn.Tanh()

Whereas I can use nn.functional.tanh directly in my_model.forward(), e.g.
output = nn.functional.tanh(input)

If you deprecate nn.functional.tanh I could do
output = nn.Tanh()(input)

where ever I need the functional form, but it would be slower because of the class instantiation.
What has this to do with Variables and Tensors? I am confused.