Thansk for the explanation.
It seems using exsiting nn. modules is better choice for building networks while nn.functional are basic building blocks of those layers.
If some custom layers need be defined, then nn.functional may be used.