A common practice of developing neural models is to define a subclass of nn.Module with both __init__ function and forward function inside it. Then we can create an instance model of the class we defined and call forward function directly use model(...). I have never questioned this before, until I found a PyTorch project on GitHub that the author doesn’t really define forward function, instead, the author create his own function to compute the loss based on the modules defined inside __init__. I don’t understand why he does that. In principle, are we always recommended using forward function to define the computation we want our model to do? If we don’t use forward and instead define our own function and then call the function explicitly, will there be any problem or disadvantage?