Yes. The functional interface is very handy when you want to perform some more complex operations.
For example, let’s say that you want the weights of your convolution to be the output of some network (for example in hyper networks 59.
In this case, you can’t use the Module interface, as it creates the weights during initialization, but you can easily use the functional interface for that
weights = net1(input)
res = F.conv2d(input, weights)