Machupicchu:

I mean how does just calling net(output) calls forward() ? (which is what happens as far as I understand)


Yes, you are right. If you directly call the nn.Module, its internal __call__ 2 method will be called, which makes sure to call hooks etc. and finally calls the forward method.
You should stick to this approach and not call model.forward manually.



 Machupicchu:

I can imagine super() is calling the constructor of a parent class but …?


That’s again right. This call initializes the parent class as seen here 9 which then initializes all necessary dicts etc. for the parameters, buffers, …