After I got back into PyTorch for some research projects lately, I adopted the habit of using the functional API for everything that does not have parameters (in the sense of weights, biases, etc.)
Regarding dropout, I think there’s no issue with that as you can specify the training/eval mode via e.g.,
x = F.dropout(out, p=dropout_prob, training=self.training)

PS: I don’t use nn.Sequential, though, because I usually like to be able access intermediate states conveniently