Solved by ptrblck in post #2 
              
              
                nn.Linear is also an nn.Module just like your Net. 
Internally when you call Net(x) or self.hidden(x) the __call__ method is called, which registers hooks etc., and finally calls forward. You can check it out in the source file.